爬虫爬取过程中代理IP会有哪些问题

爬虫爬取过程中代理IP会有哪些问题
爬虫爬取过程中代理IP会有哪些问题

学爬虫数据,必然是爬虫和反爬虫的对抗。

用代理ip做反爬虫还是比较有效的。

在做抓取代理ip项目之前,还搜索了一些相关项目。qiye的项目还不错,但是用起来也有问题。比如偶尔会被个别代理网站关闭ip(某段时间重启太多程序)。

当scrapy使用qiye项目时,经常会出现10060和10061的错误,以及超时等错误,从而导致代理ip在代理池中不断地刷。为了解决这个问题,我们考虑了两种方法:

1.更改scrapy代码

当使用代理时,request没有成功重启。切记,scrapy不会重新启动request。

2.确保代理ip的有效性

方法2更合适,scrapy应该专注于抓取网站。方法2也保证了代理ip的有效性。

这意味着你重写了一个爬行代理ip项目。

工程设计与实现。

最初的想法比较简单,直接实现了代理ip的捕捉、验证、存储和获取功能。类似于qiye项目。在代理网站上获取代理ip,验证url后存储sqlite,然后要求webapi返回代理ip。

问题来了:

1、目标网站是douban[虽然豆瓣上有api,但是api不能满足我的需求,只能自己爬豆瓣],相当于测试代理ip欺骗豆瓣的反爬虫设置。豆瓣反爬虫最重要的是访问cookie。这个cookie也可以随机模仿。

2、sqlite本身就是一个轻量级数据库。单个过程/线程访问没有问题。并行访问时,需要建立自己的锁保护。我觉得用sqlite比较低,不需要用mysql。qiye项目使用sqlalchemy支持各种数据库。我觉得没必要,因为作为辅助项目,定位小,重量轻。可以快速返回用户代理ip。

3、在测试豆瓣和豆瓣api时遇到的坑,就是豆瓣api使用代理ip基本无效.代理ip爬豆瓣还不错,但通过代理ip突破了豆瓣api分钟的限制,代理ip全部失败,很少成功.估计豆瓣api对反爬的设置要严格些,使用高匿的代理ip就可以了.但实际上高匿的ip很少,代理网站说是高匿的,不一定是高匿的。

就豆瓣而言,cookie需要设置两个项目,否则很容易被ban使用。并非ip问题。事实上,这也说明了一个问题,需要了解一些抓取网站的机制,多尝试。

4、数据库中存储的数据越多,一个过程处理不完就会被淹没。

5、各种细节。

设计/实现。

1) 使用bloomfilter判重.所获代理ip可以在判重复之前判重,通过检查判重,减少资源消耗.bf每隔一段时间就会被清空。

python本身就有bf,当时好像遇到了什么问题,实际使用和需求有点不一致,具体记不清了,最后抛弃了bf,使用了别人的bfonredis项目.paramiao/pydrbloomfilter。

其实我只是想用bf。做轮子需要时间,暂时不做。

2) 目标站点检测中使用的反爬虫方法:

代理人ip[废话,测试]随机agent带cookie访问。

3) 多个过程进行ip判断.防止过多的过程一直运行.当前判断过程的数量是直接配置在配置文件中,以后要做到自适应。

4) 代理ip以轮询方式提供。接着更新算法,根据时间和数量进行选择。

5) web缓存,选择一定数量的ip,每2-3分钟测试一次。这个测试不需要爬网站的网站,因为测试后可以连接代理访问,比如baidu。

6) 数据库使用redis.redis作为两点,一是数据存储,二是web缓存。redis本身不大。适合这里。此外,bf-redis项目也使用redis。

7) 为多个目标网站提供不同的代理和缓存。

极光爬虫代理,数据采集服务服务提供商,遍布全国200+城市服务器,从容应对海量IP需求,我们从不吝惜产品的质量,为确保您获得最佳体验,我们提供更快,更可靠的服务。注册可以免费测试。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注