爬虫代理 IP 添加后,怎么样才能定时更换 IP?

2020-06-12 14:47:26 +08:00
 xueyoucai

有获取 IP 的 API,因为代理商的限制条件每个 IP 只存在 5 分钟-20 分钟不等。

之前有尝试添加 threadiing 模块下的 timer 模块,但是好像不是很理想。所以想请教一下各位。

如何做到在主函数不停止运行的情况下,每 5 分钟更换一个 IP,然后爬虫继续运行

3959 次点击
所在节点    Python
34 条回复
lijia168
2020-06-12 15:21:33 +08:00
我之前那样子弄的,代理 ip 有个过期时间, 判断时间是否过期,过期了再重新取代理 ip
kiracyan
2020-06-12 15:24:01 +08:00
居然是五分钟换一个 一般不是从 ip 池里面随机取的吗 然后更新缓存池就好了
xueyoucai
2020-06-12 15:29:43 +08:00
@kiracyan 我的那个是 9 元 1000 条的 IP,有时效性,IP 只要提出来过几分就用不了了
xueyoucai
2020-06-12 15:30:50 +08:00
@lijia168 嗯,我也是这么想的,但是怎么样在到时间以后让采集数据的函数停止,然后去换 IP,还完以后在去执行函数
ik
2020-06-12 15:37:58 +08:00
楼主的意思是爬虫里面逻辑不好定时更新代理对吧?
可以试试用脚本配合 haproxy , iptables , cow 等方式实现定期更新端口转发
optional
2020-06-12 15:40:53 +08:00
计算机里解决不了的问题就加一层。
爬虫的 ip 从 cache 里取, 有个线程定时维护 cache 。
ik
2020-06-12 15:40:56 +08:00
这样爬虫内使用的代理始终都是固定不变的, 只是可能需要解决重启转发服务时可能出现的异常
huayunbin
2020-06-12 15:46:08 +08:00
可以写个程序维护一个 ip 池,暴露个取 ip 的口子出去,爬虫直接取就行了。
xueyoucai
2020-06-12 15:48:26 +08:00
@ik 对,您说的这几个都在 python 底下的库,还是在系统层面操作的
xueyoucai
2020-06-12 15:51:31 +08:00
@optional 这个有一个具体的思路吗,在下才疏学浅
xueyoucai
2020-06-12 15:53:11 +08:00
@huayunbin 问题是 如果把 Ip 取出来就开始计时了,到点就过期了
312ybj
2020-06-12 15:53:25 +08:00
老铁,你的 ip 代理从哪弄得
nullboy
2020-06-12 15:53:35 +08:00
我怎么试了几个代理服务商都很垃圾,根本没法用
xueyoucai
2020-06-12 15:58:39 +08:00
@312ybj 在一个 IP 代理池的项目里,然后有推荐 IP 代理网站,我的那个是按个卖的,9 元 1000 。没法,公司不掏大钱,只能小钱买这种了
aladdindingding
2020-06-12 15:59:21 +08:00
在用快代理他们隧道代理 还行
xueyoucai
2020-06-12 16:02:22 +08:00
@nullboy 我的还行,可能是我用的少? 1000 条 我做测试用了 300 。然后不能用的大概有 60 多
aladdindingding
2020-06-12 16:04:26 +08:00
用 redis 呗 或者自己起一个线程维护一个可以用的 ip 池
wxiao333
2020-06-12 16:06:07 +08:00
阿布云,一个请求换一次 ip,不按数量收费按时间,不香吗
Cosimsolo
2020-06-12 16:11:27 +08:00
@xueyoucai 隧道代理云端切换不香吗?建议可以试用一下快代理或者阿布云,都有隧道产品,能够设置定时切换,自己测试看看
kiracyan
2020-06-12 16:15:25 +08:00
@xueyoucai 拿 ip 的时候能拿到过期时间吗 然后纪录过期时间 每次拿 ip 的时候从内存读 先判断是否过期 过期再从接口拿一个更新过期时间

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/680985

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX