【PyCharm】从零到一:Python爬虫实战教程,小白、绕过反爬虫机制、实战案例全解析

news2025/1/9 15:00:16

文章目录

  • 前言
  • 一、使用的工具
  • 二、安装必要的库
  • 三、编写程序
    • 1.引入库
    • 2.发送GET请求
    • 3.绕过反爬虫机制
    • 4.解析HTML内容
    • 5.输出需要的内容
  • 四、完整源码
  • 总结


前言

爬虫(Web Crawler)是一种自动浏览万维网并从中收集信息的程序。它们常被用于搜索引擎、数据分析、市场研究等领域。在本文中,我将通过一个简单的Python爬虫实例(获取豆瓣评分前250的电影名称)来演示如何从一个网页中抓取数据。

正如标题所说,本文的关键词为:从零到一、小白、绕过反爬虫机制、实战案例全解析。本文的实战案例也是很多人入门的第一个案例,希望能够帮助到第一次接触爬虫的你。


一、使用的工具

本文使用的工具为:PyCharm 2024.1.5 (Community Edition) 。

工具的安装可以参考这篇博客:【Python、PyCharm】介绍与安装 。

二、安装必要的库

  • 在PyCharm的控制台终端界面输入“ pip install requests beautifulsoup4 ”命令,如图:
    安装库

三、编写程序

1.引入库

  • 因为需要使用Python的requests库来发送HTTP请求,并使用BeautifulSoup库来解析HTML内容。

代码如下(示例):

import requests
from bs4 import BeautifulSoup

2.发送GET请求

  • 本文使用的案例目标链接为:https://movie.douban.com/top250
    代码如下(示例):
response = requests.get("https://movie.douban.com/top250")
print(response.status_code)

输出如下(示例):

418

3.绕过反爬虫机制

  • 因为返回的状态码为“418”,418是一个HTTP协议的状态码,也被称为“I’m a teapot”(我是一个茶壶)。状态码418用于表示服务器拒绝为客户端做出请求,因为服务器被认为是一个茶壶,无法为客户端泡茶。这实际上是一种隐喻,用于嘲讽那些滥用HTTP协议或向不适合的服务器发送请求的行为。
  • 通过定义请求头绕过。
    代码如下(示例):
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
}
response = requests.get("https://movie.douban.com/top250",headers=headers)

输出如下(示例):

200

4.解析HTML内容

  • 使用BeautifulSoup解析HTML内容。
    代码如下(示例):
html = response.text
soup = BeautifulSoup(html,"html.parser")

5.输出需要的内容

  • 通过观察HTML的具体内容,编写程序筛选目标内容。以下得到的结果为前25的电影名。
    代码如下(示例):
all_titles = soup.findAll("span",attrs={"class": "title"})
for title in all_titles:
    title_string = title.string
    if '/' not in title_string:
        print(title_string)

输出如下(示例):

肖申克的救赎
霸王别姬
阿甘正传
泰坦尼克号
千与千寻
这个杀手不太冷
美丽人生
星际穿越
盗梦空间
楚门的世界
辛德勒的名单
忠犬八公的故事
海上钢琴师
三傻大闹宝莱坞
放牛班的春天
机器人总动员
疯狂动物城
无间道
控方证人
大话西游之大圣娶亲
熔炉
教父
触不可及
当幸福来敲门
寻梦环游记

四、完整源码

代码如下(示例):

import requests
from bs4 import BeautifulSoup

# 请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
}

for start_num in range(0, 250, 25):
    # 向目标网页的URL发送HTTP GET请求
    response = requests.get(f"https://movie.douban.com/top250?start={start_num}", headers=headers)

    # 确保请求成功
    if response.status_code == 200:
        html = response.text

        # 使用BeautifulSoup解析HTML内容
        soup = BeautifulSoup(html, "html.parser")

        # 查找所有标题(<span>),提取"class"属性为"title"的元素
        all_titles = soup.findAll("span", attrs={"class": "title"})

        for title in all_titles:
            title_string = title.string
            if '/' not in title_string:
                print(title_string)

    else:
        print("请求失败,状态码:", response.status_code)

输出如下(示例):

肖申克的救赎
霸王别姬
阿甘正传
泰坦尼克号
千与千寻
这个杀手不太冷
美丽人生
星际穿越
盗梦空间
楚门的世界
辛德勒的名单
忠犬八公的故事
海上钢琴师
三傻大闹宝莱坞
放牛班的春天
机器人总动员
疯狂动物城
无间道
控方证人
大话西游之大圣娶亲
熔炉
教父
触不可及
当幸福来敲门
寻梦环游记
末代皇帝
龙猫
怦然心动
哈利·波特与魔法石
活着
蝙蝠侠:黑暗骑士
指环王3:王者无敌
我不是药神
乱世佳人
飞屋环游记
素媛
哈尔的移动城堡
十二怒汉
让子弹飞
何以为家
海蒂和爷爷
猫鼠游戏
摔跤吧!爸爸
天空之城
鬼子来了
少年派的奇幻漂流
钢琴家
指环王2:双塔奇兵
大话西游之月光宝盒
闻香识女人
死亡诗社
绿皮书
大闹天宫
罗马假日
黑客帝国
指环王1:护戒使者
天堂电影院
教父2
狮子王
辩护人
饮食男女
搏击俱乐部
本杰明·巴顿奇事
美丽心灵
穿条纹睡衣的男孩
窃听风暴
情书
两杆大烟枪
音乐之声
西西里的美丽传说
看不见的客人
哈利·波特与死亡圣器()
阿凡达
拯救大兵瑞恩
功夫
小鞋子
飞越疯人院
沉默的羔羊
布达佩斯大饭店
哈利·波特与阿兹卡班的囚徒
蝴蝶效应
禁闭岛
致命魔术
心灵捕手
超脱
低俗小说
摩登时代
春光乍泄
喜剧之王
海豚湾
致命ID
美国往事
杀人回忆
哈利·波特与密室
红辣椒
加勒比海盗
一一
七宗罪
狩猎
唐伯虎点秋香
7号房的礼物
蝙蝠侠:黑暗骑士崛起
被嫌弃的松子的一生
甜蜜蜜
爱在黎明破晓前
第六感
超能陆战队
请以你的名字呼唤我
重庆森林
入殓师
断背山
寄生虫
剪刀手爱德华
幽灵公主
爱在日落黄昏时
勇敢的心
菊次郎的夏天
借东西的小人阿莉埃蒂
未麻的部屋
消失的爱人
无人知晓
时空恋旅人
完美的世界
阳光灿烂的日子
倩女幽魂
哈利·波特与火焰杯
小森林 夏秋篇
天使爱美丽
茶馆
侧耳倾听
驯龙高手
教父3
新世界
怪兽电力公司
幸福终点站
一个叫欧维的男人决定去死
玩具总动员3
傲慢与偏见
小森林 冬春篇
头脑特工队
被解救的姜戈
萤火之森
色,戒
釜山行
神偷奶爸
九品芝麻官
哪吒闹海
告白
喜宴
玛丽和马克思
大鱼
模仿游戏
头号玩家
花样年华
射雕英雄传之东成西就
七武士
我是山姆
惊魂记
血战钢锯岭
阳光姐妹淘
恐怖直播
你的名字。
黑客帝国3:矩阵革命
三块广告牌
心迷宫
电锯惊魂
达拉斯买家俱乐部
疯狂原始人
小丑
谍影重重3
心灵奇旅
背靠背,脸对脸
上帝之城
绿里奇迹
英雄本色
风之谷
爱在午夜降临前
海街日记
纵横四海
疯狂的石头
卢旺达饭店
无间道2
2001太空漫游
雨中曲
记忆碎片
小偷家族
无敌破坏王
岁月神偷
忠犬八公物语
荒蛮故事
冰川时代
牯岭街少年杀人事件
恐怖游轮
爆裂鼓手
魔女宅急便
东京教父
大佛普拉斯
贫民窟的百万富翁
遗愿清单
末路狂花
东邪西毒
你看起来好像很好吃
可可西里
源代码
城市之光
疯狂的麦克斯4:狂暴之路
海边的曼彻斯特
黑天鹅
波西米亚狂想曲
真爱至上
爱乐之城
芙蓉镇
青蛇
雨人
高山下的花环
初恋这件小事
终结者2:审判日
人工智能
虎口脱险
恋恋笔记本
花束般的恋爱
无耻混蛋
新龙门客栈
罗生门
崖上的波妞
千钧一发
哈利·波特与死亡圣器()
彗星来的那一夜
白日梦想家
萤火虫之墓
黑客帝国2:重装上阵
奇迹男孩
火星救援
二十二
大红灯笼高高挂
战争之王
哈利·波特与凤凰社
血钻
步履不停
千年女优
谍影重重2
房间
魂断蓝桥
蜘蛛侠:平行宇宙
弱点
谍影重重
阿飞正传
朗读者
隐藏人物
再次出发之纽约遇见你

总结

以上,就是第一次爬虫实例的所有内容。本文仅为初步探讨,旨在抛砖引玉,非常期待读者们能够分享看法和见解,再次感谢您的观看,再见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2063807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于UDP/TCP的 c/s 通信模型

基于UDP c/s通信模型 客户端&#xff08;socket&#xff1b;sendto ...&#xff09; 服务器端 ---把自己的地址公布出去 &#xff08;socket&#xff1b;bind //绑定&#xff1b; recvfrom ...&#xff09; 1.recvfrom函数&#xff1a; ssize_t recvfrom( int sockfd, /…

浮毛难清除、异味难消散?选到不好的宠物空气净化器会有什么危害

近年来&#xff0c;不少人家里都养了宠物&#xff0c;有些是猫、有些是狗&#xff0c;甚至有些是兔子&#xff0c;不少人希望能通过它们抒发心中的郁闷&#xff0c;成为自己的搭子。这些宠物在能带来欢乐的同时也会带来一些小烦恼&#xff0c;比如宠物的浮毛、异味都困扰着我们…

Linux日志管理基本介绍及日志轮替原理

&#x1f600;前言 本篇博文是关于日志管理&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x1f609;&#x…

ai智能写作生成器哪个好用?推荐五款!

在内容创作日益重要的今天&#xff0c;ai智能写作生成器成为了众多创作者的得力助手。它们不仅能提高写作效率&#xff0c;还能提升写作内容的质量。然而&#xff0c;市场上的ai智能写作生成器众多&#xff0c;选择一个合适的生成器并非易事。本文将为你推荐5款好用的ai智能写作…

[图解]用例规约之业务规则不是算法

1 00:00:01,530 --> 00:00:03,090 像这种某某算法之类的 2 00:00:03,100 --> 00:00:04,130 它往往是什么 3 00:00:05,590 --> 00:00:07,440 某种实现的一个选择 4 00:00:08,140 --> 00:00:09,550 它很可能不是需求 5 00:00:10,620 --> 00:00:13,240 你要问他…

汉服推广网站

TOC springboot0790汉服推广网站 绪论 1.1研究背景 随着网络不断的普及发展&#xff0c;汉服文化平台网站依靠网络技术的支持得到了快速的发展&#xff0c;首先要从用户的实际需求出发&#xff0c;通过了解用户的需求开发出具有针对性首页、汉服知识、服装展示、用户相册、…

实训day34(8.22)

一、回顾 高并发集群 饿了么后端的登录模块 1、数据库 1. 主从复制(高可用) 2. 传统的主从复制 3. gtids事务型的主从复制 4. 注意 1. server_id唯一 2. 8.x版本需要get_ssl_pub_key 3. 5.x不需要 4. change master to 5. stop | start slave 5. 非交互 import pymys…

Redis7基础篇(八)

redis集群 是什么 能干吗 集群算法-分片-槽位slot redis集群的槽位slot redis集群的分片 分片和槽位的优势 槽位映射的解决方案 上面的三个方案分别对应了小厂 中厂 大厂 哈希槽取余分区 缺点 一致性哈希算法分区 小总结 哈希槽分区 经典面试题 这里说的redis是ap而不是cp的 …

全球著名地标卫星影像收藏第3辑

世界那么大&#xff0c;一起去看看&#xff01; 我们在《全球著名地标卫星影像收藏第2辑》一文中&#xff0c;为大家分享了10全球著名地标高清卫星影像&#xff0c;现在继续为大家分享10个著名地标。 我们整理的这些地标KML文件可以分享大家&#xff0c;你也可以打开相应的UR…

哪款骑行耳机值得入手?精选五款热门骑行耳机实测分析!

骨传导耳机作为骑行爱好者最受欢迎的数码装备之一&#xff0c;凭借其独特优势在骑行爱好者中广受好评&#xff0c;然而由于骨传导耳机市场上品牌众多&#xff0c;它们的品质良莠不齐&#xff0c;让众多消费者无从下手&#xff0c;特别是那些缺乏专业技术支撑的劣质产品&#xf…

Day97:云上攻防-云原生篇KubernetesK8s安全APIKubelet未授权访问容器执行

知识点&#xff1a; 1、云原生-K8s安全-名词架构&各攻击点 2、云原生-K8s安全-Kubelet未授权访问 3、云原生-K8s安全-API Server未授权访问 K8S集群 Kubernetes是一个开源的&#xff0c;用于编排云平台中多个主机上的容器化的应用&#xff0c;目标是让部署容器化的应用…

83.游戏改造-窗口化

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 上一个内容&#xff1a;82.游戏改造-修改分辨率 逆向窗口化的思路&#xff1a; 首先使用Ollydbg工具打开 82.游…

《重温JavaScript五子棋小游戏》

目录 全部运行代码&#xff1a;五子棋游戏的基本步骤&#xff1a;代码剖析&#xff1a;1. 初始化游戏界面2. 管理游戏状态3. 玩家交互4. 电脑AI5. 胜负判定6. 游戏控制 本文通过实现一个基本的五子棋游戏&#xff0c;展示了如何使用HTML、CSS和JavaScript来构建一个简单的交互式…

校园疫情防控系统

TOC springboot0780校园疫情防控系统 第1章 绪论 1.1背景及意义 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。学校管理水平的不断提高&#xff0c;日常生活中学生对校园疫情防控方面的要求也在不断提高&#xff0c;学生的人数更是不断增加&#xff0c;使得…

虚幻5|AI视力系统,听力系统,预测系统(3)预测系统

虚幻5|AI视力系统&#xff0c;听力系统&#xff0c;预测系统&#xff08;2&#xff09;听力系统-CSDN博客 一&#xff0c;添加一个AI预感感官配置 1.选中我们的AIPerception,右侧细节添加一个AI预感感官配置&#xff0c;然后我们把所有感官的年龄都调成5&#xff0c;是所有 2…

jmeter——添加测试片段

问&#xff1a;为什么要添加测试片段&#xff1f; 答&#xff1a;在测试的过程中&#xff0c;有可能遇到这一个测试需要上一个测试为前提的情况&#xff0c;例如&#xff1a;登录之后才能下单&#xff0c;所以先要进行登录&#xff0c;因此就用到【测试片段】。 1、右键【测试…

网络协议概述,ip协议,TCP协议,udp协议,二者区别,python中用socket类实现网络通信程序的编写(服务器套接字实现TCP编程,UDP编程)

七层协议 ① ip协议 ②TCP协议 TCP协议面向连接的&#xff0c;可靠的协议&#xff0c;有三次握手来保证可靠性 ③ udp协议 不一定可以保证数据发过去&#xff0c;像发短信一样&#xff0c;对方不一定在线&#xff0c;号码也不一定对 TCP,UDP之间存在一些区别&#xff1a…

JavaSocket编程

一、JavaSocket编程 1.1HTTP协议 后端原理 2. 特点 同步&#xff1a;就是两个任务执行的过程中&#xff0c;其中一个任务要等另一个任务完成某各阶段性工作才能继续执行&#xff0c;如厨师A炒番茄&#xff0c;将葱花放入锅中&#xff0c;然后需要放入番茄&#xff0c;但是厨…

【计算机系统基础读书笔记】1.1.3 程序和指令的执行过程

冯诺依曼结构计算机的功能通过执行程序实现&#xff0c;程序的执行过程就算所包含的指令的执行过程。 指令&#xff08;instruction&#xff09;是用0和1表示的一串0/1序列&#xff0c;用来指示CPU完成一个特定的原子操作。 指令&#xff08;instruction&#xff09;在计算机科…

Redis 键值型数据库

一、Redis是什么 Redis&#xff1a;REmote DIctionary Server&#xff08;远程字典服务器&#xff09; 是完全开源免费的&#xff0c;用C语言编写的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的&#xff08;Key/Value&#xff09;分布式内存数据 库&#xff0c;基于内存…