有时候爬虫会遇到ip被禁的情况。这时候可以找代理网站,抓取ip,做动态轮询。也可以使用别人做的第三方ip代理平台,比如Crawler,就是利用代理IP地址池做分布式下载的第三方平台。除了scrapy、普通java、php、python等。可以用curl来称呼。可以指定如何设置。
如果不使用第三方平台作为代理ip,就要手动抓取ip。我们可以谷歌一下代理ip,找很多网站,找几个稳定的代理网站,写一个爬虫脚本继续抓取,或者使用量不大的话手动粘贴抓取。土豪一点点的话,其实买一点点就可以了,一美元左右就值得买几千。
这时候如果你用的是python,需要自己维护一个ip池,控制每个ip的访问次数,随机更换ip什么的。然而,如果你想让它面向服务,你可以使用squid来绑定多个ip地址,并充当转发代理。Squid是一款优秀的用于Linux系统的代理服务器软件,代理列表的代理ip可以按照Squid的cache_peer机制以一定的格式写入配置文件中。
这相当于把所有的管理和调度问题都留给了squid,你只需要使用爬虫来访问squid服务端口。
现在我们可以总结所有步骤:
1.使用爬虫脚本每天定时抓取代理网站上的免费ip,或者购买一定量的ip,写入MongoDB或其他数据库。此表用作原始表。
2.在使用它之前,你需要做一个步骤测试,即测试ip是否有效。方法是用curl访问网站检查返回值,需要新建一个表,循环读取原表并在有效时插入,验证后从原表中删除。在验证的同时,您可以使用响应时间来计算ip的质量和最大使用次数。有一种算法可以参考基于连接代理优化管理的多线程网络爬虫处理方法。
3.将有效ip写入IP模拟器代理的配置文件,并重新加载配置文件。
4.让爬虫程序去指定的服务ip和端口并抓取它。