在数据收集层面来讲,爬虫要想采集数据,基本前提要能突破网站的反爬虫机制,接着还能防止网站封IP,这样才可以高效的进行工作。爬虫中如何强效防止ip被封问题?
首先,要知道为什么会封IP,这样才能更好的避免封IP。有些网站反爬措施比较弱,伪装下IP就可以绕过了,修改X-Forwarded-for就万事大吉。但现在这样的网站比较少了,大部分的网站的反爬措施都在不断加强,不断升级,这给避免封IP带来更大的困难。
方法1:
1)如果有条件,建议一定要使用代理IP。(程序逻辑变化小,只需要代理功能)
2)在有外网IP的机器上,部署爬虫代理服务器。(根据对方网站屏蔽规则不同,只需要添加更多的代理就行了)
3)你的程序,使用轮训替换代理服务器来访问想要采集的网站。(就算具体IP被屏蔽了,你可以直接把代理服务器下线,程序逻辑不需要变化)
方法2:
1)ADSL+脚本,监测是否被封,然后不断切换ip。
2)设置查询频率限制(正统的做法是调用该网站提供的服务接口)。
方法3:
1)useragent伪装和轮换。
2)使用代理ip和轮换。
3)cookies的处理,有些网站对登陆用户政策宽松些。
方法4:
尽可能的模拟用户行为:
1)频繁切换UserAgent(模拟浏览器访问)。
2)降低抓取频率,时间设置长一些,访问时间采用随机数。
3)多页面数据,随机访问。
反爬虫策略不断升级,相应的爬虫策略也要不断升级,不然有一天,你会发现,哪怕您使用了大量的代理IP,依然避免不了大面积的封IP,爬虫工作受阻。