导读六大,方法,搞定,Python,爬虫,封杀,取的,过程中,难

  在爬取的过程中难免发生ip被封和403错误等等,这都是网站检测出你是爬虫而进行反爬措施,这里自己总结下如何避免。

  方法1:设置等待时间

  有一些网站的防范措施可能会因为你快速提交表单而把你当做机器人爬虫,比如说以非常人的速度下载图片,登录网站,爬取信息。

  常见的设置等待时间有两种,一种是显性等待时间(强制停几秒),一种是隐性等待时间(看具体情况,比如根据元素加载完成需要时间而等待)

  方法2:修改请求头

  识别你是机器人还是人类浏览器浏览的重要依据就是User-Agent。

  方法3:采用代理ip

  当自己的ip被网站封了之后,只能采取换代理ip的方式进行爬取,所以,我建议,每次爬取的时候尽量用代理来爬,封了代理,还有代理,无穷无尽啊。采用代理ip池的方法,可以看出,检测出的ip是ip池中的一个,对吧,很简单对不对,那么怎么来创建ip池呢,也很简单,用BS4随便找个匿名ip的网站进行代理ip爬取,然后清洗一下ip,把能用的留下来写到列表里,然后就可以形成ip池啦,最后当某个ip不能用了,那就从池中剔除!ip池制作。

  方法4:避开不可见元素陷阱

  自己爬着爬着就把隐藏元素都爬出来了,你说你自己是不是爬虫吧,这是网站给爬虫的陷阱,只要发现,立马封IP,所以请查看一下元素再进行爬取!比如说这个网址,一个简单的登录页面,从审查元素中我们可以看到有一些元素是不可见的!

  方法5:采用分布式爬取

  分布式爬取,针对比较大型爬虫系统,实现步骤如下所示1.基本的http抓取工具,如scrapy2.避免重复抓取网页,如Bloom Filter3.维护一个所有集群机器能够有效分享的分布式队列4.将分布式队列和Scrapy结合5.后续处理,网页析取(python-goose),存储(Mongodb)。

  方法6:进行模拟登陆

  这个就太多了,一般用Selenium,可以结合Firefox或者是无头浏览器PhantomJS,这个做的东西比较多了,如果感兴趣,可以点击这些,进行查看,方法,代码,解析,一应俱全。