level 5
bhs0412
楼主
如果没有代理IP,爬虫工作就难以开展,因此许多爬虫工程师需要购买高效、稳定的代理IP。拥有优质的代理IP之后,能不能做得更好?事不是这么简单,还需要优化方案,合理配置资源,提高工作效率,更加高效、快捷、稳定地抓虫。
一、每个进程随机地从接口API中选取一组IP(例如,一次提取100个IP)进行循环。
然后再次调用API获取,大致逻辑如下:
1、每个进程(或线程),随机从接口返回一批IP返回,循环使用IP列表以获取数据;
2、如果访问成功,则继续获取下一条。
3、如果失败(例如:超时.出现验证码等),从界面中提取一批IP,继续尝试。
程序缺陷:每个IP都有有效期,如果取100个IP,使用10个时,后面的大多数IP都会失效。当您设置HTTP请求时,连接时间已超时3秒钟,并且在读时超时5秒钟,那么您可能会浪费3-8秒,说不定这3-8秒就能抓到几十次了。
二、每个进程随机地从接口API中获得一个IP以使用,失败后再调用API以获得IP。
大致逻辑如下:
1.每个进程(或线程),从接口随机提取一个IP,并使用该IP来访问该资源,
2.如果访问成功,继续执行下一项任务。
3.如果失败(例如:超时.出现验证码等),从界面随机取一个IP,继续尝试。
程序缺陷:调用API获取IP的行为十分频繁,会给代理服务器带来很大的压力,影响API接口的稳定性,且提取困难。该方案同样适用,且不能长期稳定运行。
三、首先将大量IP导入本地数据库,从数据库中提取IP。
大概逻辑如下:
1.在数据库内建立表格,编写导入脚本,每分钟请求多少次API(咨询代理IP服务推荐),将IP列表导入数据库内。
2.在数据库内记录导入时间.IP.Port.过期时间.IP可用状态等字段;
3.编写抓取脚本,从数据库中读取可用的IP,每个进程从数据库中获取一个IP来使用。
4.执行抓取,判断结果,处理cookie等等,只要验证代码出现或失败,放弃此IP,重新换IP。
该方案有效地避免了代理服务器资源的消耗,有效分配代理IP,更加高效、稳定,保证了爬虫工作的持续性和稳定性。
2021年09月27日 07点09分
1
一、每个进程随机地从接口API中选取一组IP(例如,一次提取100个IP)进行循环。
然后再次调用API获取,大致逻辑如下:
1、每个进程(或线程),随机从接口返回一批IP返回,循环使用IP列表以获取数据;
2、如果访问成功,则继续获取下一条。
3、如果失败(例如:超时.出现验证码等),从界面中提取一批IP,继续尝试。
程序缺陷:每个IP都有有效期,如果取100个IP,使用10个时,后面的大多数IP都会失效。当您设置HTTP请求时,连接时间已超时3秒钟,并且在读时超时5秒钟,那么您可能会浪费3-8秒,说不定这3-8秒就能抓到几十次了。
二、每个进程随机地从接口API中获得一个IP以使用,失败后再调用API以获得IP。
大致逻辑如下:
1.每个进程(或线程),从接口随机提取一个IP,并使用该IP来访问该资源,
2.如果访问成功,继续执行下一项任务。
3.如果失败(例如:超时.出现验证码等),从界面随机取一个IP,继续尝试。
程序缺陷:调用API获取IP的行为十分频繁,会给代理服务器带来很大的压力,影响API接口的稳定性,且提取困难。该方案同样适用,且不能长期稳定运行。
三、首先将大量IP导入本地数据库,从数据库中提取IP。
大概逻辑如下:
1.在数据库内建立表格,编写导入脚本,每分钟请求多少次API(咨询代理IP服务推荐),将IP列表导入数据库内。
2.在数据库内记录导入时间.IP.Port.过期时间.IP可用状态等字段;
3.编写抓取脚本,从数据库中读取可用的IP,每个进程从数据库中获取一个IP来使用。
4.执行抓取,判断结果,处理cookie等等,只要验证代码出现或失败,放弃此IP,重新换IP。
该方案有效地避免了代理服务器资源的消耗,有效分配代理IP,更加高效、稳定,保证了爬虫工作的持续性和稳定性。