Python爬虫如何避免爬取网站访问过于频繁

Python爬虫如何避免爬取网站访问过于频繁,第1张

一 关于爬虫

爬虫,是一种按照一定的规则自动地抓取互联网信息的程序。本质是利用程序获取对我们有利的数据。

反爬虫,从不是将爬虫完全杜绝;而是想办法将爬虫的访问量限制在一个可接纳的范围,不要让它过于频繁。

二 提高爬虫效率的方法

协程。采用协程,让多个爬虫一起工作,可以大幅度提高效率。

多进程。使用CPU的多个核,使用几个核就能提高几倍。

多线程。将任务分成多个,并发(交替)的执行。

分布式爬虫。让多个设备去跑同一个项目,效率也能大幅提升。

打包技术。可以将python文件打包成可执行的exe文件,让其在后台执行即可。

其他。比如,使用网速好的网络等等。

三 反爬虫的措施

限制请求头,即request header。解决方法:我们可以填写user-agent声明自己的身份,有时还要去填写origin和referer声明请求的来源。

限制登录,即不登录就不能访问。解决方法:我们可以使用cookies和session的知识去模拟登录。

复杂的交互,比如设置“验证码”来阻拦登录。这就比较难做,解决方法1:我们用Selenium去手动输入验证码;方法2:我们用一些图像处理的库自动识别验证码(tesserocr/pytesserart/pillow)。

ip限制。如果这个IP地址,爬取网站频次太高,那么服务器就会暂时封掉来自这个IP地址的请求。 解决方法:使用timesleep()来对爬虫的速度进行限制,建立IP代理池或者使用IPIDEA避免IP被封禁。

只要访问跳转链接的时候在cookie中带上SNUID值即可,其他的都可以不要

后来搜狗又做了IP限制,这种反反爬虫的策略也要与时俱进,针对新限制做调整

如果对速度要求不高,可以尽量加大两次访问的时间间隔,而如果对速度要求比较高

那就可以去买一些IP来用,针对验证码问题,则可以自己写验证码识别程序或者程序

中加载打码软件

Robotstxt - 禁止爬虫

robotstxt用于禁止网络爬虫访问网站指定目录。robotstxt的格式采用面向行的语法:空行、注释行(以#打头)、规则行。规则行的格式为:Field: value。常见的规则行:User-Agent、Disallow、Allow行。

User-Agent行

User-Agent: robot-name

User-Agent: 

Disallow和Allow行

Disallow: /path

Disallow:           # 空字符串,起通配符效果,全禁止

Allow: /path

Allow:              # 空字符串,起通配符效果,全允许

搜索引擎的User-Agent对应名称

搜索引擎

User-Agent值

Google googlebot 

百度 baiduspider 

雅虎 slurp 

MSN msnbot 

Alexa is_archiver

我在Linux上抓包观察到的一些搜索引擎访问记录:

# tcpdump -n -nn -A -l -s1024 'tcp port 80'|grep User-Agent

User-Agent: Mozilla/50 (compatible; Googlebot/21; +>

爬虫时IP被限制怎么解决?以下是一些常见的解决方法:

1,使用代理IP

使用代理IP是常用的解决方法之一。代理IP可以隐藏你的真实IP地址,并使你的请求看起来来自其他IP地址。这可以有效地绕过目标网站的IP限制,并允许你继续进行爬取。

2,延迟请求频率

有时,目标网站禁止你的IP访问是因为你的爬虫程序过于频繁地请求网站。在这种情况下,可以尝试通过减少请求频率来解决问题。可以通过添加一个等待时间或延迟请求的方法来实现。这样可以使你的爬虫程序看起来更像是一个真实的用户而不是一个自动化程序。

3,修改请求头

有些网站会通过检查请求头信息来判断是否是爬虫程序。因此,你可以尝试修改请求头信息,使其看起来更像是一个真实的用户在访问网站。例如,可以添加User-Agent、Referer等字段信息,并将其设置为浏览器的默认值。

4,使用验证码识别工具

有些网站会使用验证码来防止自动化程序的访问。在这种情况下,你可以使用一些验证码识别工具,例如Tesseract OCR、百度OCR等工具,来自动解析验证码,并将结果添加到请求中。

5,使用多个IP地址

如果你有多个IP地址,可以轮流使用这些IP地址来发送请求,以避免在使用单个IP地址时被禁止访问。

总之,在进行爬虫时,应该注意不要过度频繁地请求网站,同时也应该尊重网站的反爬虫策略,以避免造成不必要的麻烦。如果你遇到了IP被禁止的问题,可以尝试以上解决方法。

巨量>

以上就是关于Python爬虫如何避免爬取网站访问过于频繁全部的内容,包括:Python爬虫如何避免爬取网站访问过于频繁、搜狗微信的反爬虫规则是怎么样的我每 2 分钟抓取一次可以吗、如何禁止别人爬虫小程序代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10207361.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存