专栏名称: python实战
Python实战
目录
相关文章推荐
Python爱好者社区  ·  python速成手册 ·  4 天前  
Python中文社区  ·  用 Python 解读股市情绪,让你从韭菜变镰刀 ·  1 周前  
Python爱好者社区  ·  写个爬虫,一单一个W ·  6 天前  
Python爱好者社区  ·  20个python3大项目开发源代码(附源码) ·  6 天前  
51好读  ›  专栏  ›  python实战

Python爬取网站时防封杀秘诀

python实战  · 公众号  · Python  · 2017-03-16 21:58

正文

设置等待时间

一些网站的防范措施可能因为你提交表单过快把你当成机器人爬虫,例如说以非正常速度下载视频、登录网站、图片、爬取信息等等。

常用的等待时间有两种 :

  • 显性等待时间

  • 隐性等待时间

显性等待时间

import time#导入包time.sleep(3)#设置时间相隔三秒,且最好在半夜的时候进行数据采集,采集一定不能太快,不然网站很容把你当机器人爬虫干掉你。

隐式等待时间

用到的主要语句,以wait.until()做例子:

Python学习交流群:330637182

以上语句是在等页面元素加载完成后进行的下一步,因爬虫速度过快,导致有元素没有被加载完全,就被进行下一步从而导致没有查到元素或被当前网站认为是机器人在操作。

修改请求头

User-Agent是鉴定你是机器人还是活人在浏览的最重要依据,例如真人在浏览器浏览就会使它这样:

Python学习交流群:330637182

就像urllib2,默认User-Agent是Python-urllib2/2.7,要对其进行修改。

Python学习交流群:330637182

使用代理ip

在自己的ip被网站禁封后,只能使用更换代理ip来爬取,所以,在每次爬取时最好用代理爬,封完一个还有另一个,封不完的,但不要用代理去黑学校的网站,你懂得,代理实现程序如下:


Python学习交流群:330637182

选择的测试站是http://www.ip181.com, 它能检测你用的ip是多少,刚好来看看用代理ip成功了没有。

Python学习交流群:330637182

采用代理ip来访问

在结果中我们看到,检测到代理ip,就是我加的ip值,这是压箱底的招,在ip被封之后,使用代理ip去访问。如果其中一个代理ip挂了咋办,那就做个ip池,就是N个代理ip堆在一起,一运行就在ip池用一个代理ip去做访问ip就OK了。

选用ip池的方法:

Python学习交流群:330637182

用ip池获取ip访问

使用代理ip池,可以看到检测到的ip是ip池里的,那如何来创ip池呢,使用BS4随意一个匿名ip的网站来代理ip爬取,将ip清洗清洗,将可以使用的留下写到列表中衢,这样ip池就形成了,当其中一个ip不能使用后,就把它踢掉!

避开不可见元素陷阱

你爬着爬着把隐藏元素全都爬出来了,你说你是不是爬虫呢,这是网站给爬虫设置的陷阱,一被发现,你的ip就GG了,所以要查看下元素再去进行爬取。例如这个网址,一个登录页面,在审查元素当中有些元素是不可见的。


Python学习交流裙:330637182

从上图可以看到不显示的url和隐藏的value。

查找出不可见的value代码与陷阱url。

py学习交流裙:330637182

结果如下:

Python学习交流裙:330637182

喜欢python或者想学习python的朋友可以加QQ群:330637182!群内每天会更新python资料,还有大牛不定期指导哟!

   

推荐文章
Python爱好者社区  ·  python速成手册
4 天前
Python爱好者社区  ·  写个爬虫,一单一个W
6 天前
Python爱好者社区  ·  20个python3大项目开发源代码(附源码)
6 天前
Bomoda摩登系  ·  “你愿意嫁给我吗?”她说“好!”
7 年前
华夏影像诊断中心  ·  人生相遇种种,都是命中注定
7 年前