python爬虫零基础入门——反爬的简单说明

简介: 之前在《如何开始写你的第一个python脚本——简单爬虫入门!》中给大家分享了一下写一个爬虫脚本的基本步骤,今天继续分享给大家在初期遇到的一个很烦人的问题——反爬及处理办法!我们的工具及库为:python3.6、pycharm、requests库基本步骤:获取网页源代码——匹配需要的内容——提取并保存。

之前在《如何开始写你的第一个python脚本——简单爬虫入门!》中给大家分享了一下写一个爬虫脚本的基本步骤,今天继续分享给大家在初期遇到的一个很烦人的问题——反爬及处理办法!

我们的工具及库为:python3.6、pycharm、requests库

基本步骤:获取网页源代码——匹配需要的内容——提取并保存。
在这中间经常遇到这么几类问题:

  • 脚本中获取的网页源代码和网页右键查看的源代码不同(编码格式的问题除外),或者返回400状态码

    • 需要登录才能获取,不登录不能查看源代码,网页中也是需要登录才可以访问的

    • 有验证码

    • 开始可以获取内容,运行一段时间后报错(具体情况有:服务器拒绝连接,即ip被封等)一般为HTTPError

我们逐条看看

Headers的使用

某些网站反感爬虫的到访,于是直接拒绝所有爬虫的请求,或者返回其他的网页源码比如:连接频繁稍后在访问,或者直接返回403的状态码,比如抓取简书主页的时候出现下图

这是因为我们在访问网站服务器的时候,没有做任何的伪装,就相当于告诉服务器“我是个脚本”,那么服务器当然不客气的拒绝你了!

处理方法其实很简单,我们在代码中伪装自己是个浏览器就可以了,requests库提供了相应的方法,headers参数,我们重新请求简书主页,加入我的headers参数,在看看结果

这样就实现了网页源代码的获取,这里用到了User-Agent这个参数,它的作用就是告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本值,获取它也很简单,比如我用的火狐浏览器,打开网页后,用F12打开开发者工具,然后选择网络,当访问简书主页的时候,会出现很多的情请求,随便找一个点击一下,右边就会出现请求头了,如下图:

python直播学习群542110741

而这个请求头中的其他参数也很重要,具体我们在随后的讲解中慢慢解释

requests.session方法

在我们想抓取某些需要登录才可以访问的网页时,就需要带上cookie参数,这个参数在请求头中,它记录了我们的账号信息,具体实现的方法有2个,1就是加入header参数中或者独立写到requests中,代码为requests.get(url,cookie=cookie)。而requests库还提供了另外一个方法:

session,自动保存cookies,可以设置请求参数,下次请求自动带上请求参数

session可以用来提供默认数据,函数参数级别的数据会和session级别的数据合并,如果key重复,函数参数级别的数据将覆盖session级别的数据。如果想取消session的某个参数,可以在传递一个相同key,value为None的dict.

也就是说,我们使用session提交cookie后,服务器如果对cookie有变动,那么session也会自动记录,非常方便,代码实现:

s = requests.Session()

r = s.get(url,cookie=cookie)

print(r.text)

验证码的处理

对于一些简单的验证码,可以进行简单的识别,但是有些反人类的比如12306的验证码,要么直接程序中显示并手工验证,要么通过第三方的打码平台进行验证,当然这个是要收费的。

requests.proxies方法、time模块

我们经常会遇到,脚本可以正常运行,但是很快就出现了报错,远程服务器断开连接或者拒绝访问等等情况,这是因为好多网站都有设定访问速度、次数、流量之类的。

同时这里也希望大家控制住自己,不要多线程不限制的下载,那样对网站很不好的!

这种情况下,requests库提供了一个proxies的方法,就是指定ip代理的功能,它的格式是{”http”: “http://10.10.10.10:3128“}这样的,注意key值部分,一定要正确,否则会报错。

而不用代理的话,也可以在程序中人工加入休眠时间的方式来强制脚本不那么快的运行,这就需要用到time库了,比如每次请求间隔0.5秒:time.sleep(0.5),或者加上random库,这样:time.sleep(random.random()*2)

自动化测试工具 selenium

为什么要把selenium放到最后呢,因为用它可以解决大部分的反爬!是的,这个库就是这么厉害!

这里就不详细讲了,随后开个单篇,我们慢慢说!还是那句话,学习本身是一个漫长的过程,我们需要不断的练习来增强我们的学习兴趣,以及学到更扎实的知识!大家加油!

相关文章
|
2月前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
3月前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
3月前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
3天前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
29天前
|
数据采集 JSON 数据格式
Python爬虫:京东商品评论内容
京东商品评论接口为商家和消费者提供了重要工具。商家可分析评论优化产品,消费者则依赖评论做出购买决策。该接口通过HTTP请求获取评论内容、时间、点赞数等数据,支持分页和筛选好评、中评、差评。Python示例代码展示了如何调用接口并处理返回的JSON数据。应用场景包括产品优化、消费者决策辅助、市场竞争分析及舆情监测。
|
1月前
|
数据采集 供应链 API
Python爬虫与1688图片搜索API接口:深度解析与显著收益
在电子商务领域,数据是驱动业务决策的核心。阿里巴巴旗下的1688平台作为全球领先的B2B市场,提供了丰富的API接口,特别是图片搜索API(`item_search_img`),允许开发者通过上传图片搜索相似商品。本文介绍如何结合Python爬虫技术高效利用该接口,提升搜索效率和用户体验,助力企业实现自动化商品搜索、库存管理优化、竞品监控与定价策略调整等,显著提高运营效率和市场竞争力。
83 3
|
2月前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
2月前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
2月前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。

热门文章

最新文章