请问大家爬虫这种情况(超时,限流)怎么解决?

2016-07-14 09:26:33 +08:00
 checgg
不能上图,我直接复制吧。
========== 2016-07-13 18:00:01 ===========

qq 开始抓取 ..
mg 开始抓取 ..
iqy 开始抓取 ..
yk 开始抓取 ..
mg 抓取完毕,耗时 1 分钟 10 秒
yk 抓取完毕,耗时 3 分钟 3 秒
iqy 抓取完毕,耗时 10 分钟 56 秒
qq 抓取完毕,耗时 136 分钟 22 秒

========== 2016-07-13 20:00:01 ===========

qq 开始抓取 ..
mg 开始抓取 ..
iqy 开始抓取 ..
yk 开始抓取 ..
mg 抓取完毕,耗时 1 分钟 9 秒
yk 抓取完毕,耗时 3 分钟 38 秒
iqy 抓取完毕,耗时 62 分钟 46 秒
qq 抓取完毕,耗时 211 分钟 52 秒

========== 2016-07-13 22:00:01 ===========

qq 开始抓取 ..
mg 开始抓取 ..
iqy 开始抓取 ..
yk 开始抓取 ..
mg 抓取完毕,耗时 1 分钟 24 秒
yk 抓取完毕,耗时 4 分钟 3 秒
iqy 抓取完毕,耗时 55 分钟 31 秒
qq 抓取完毕,耗时 145 分钟 23 秒

========== 2016-07-14 00:00:01 ===========

qq 开始抓取 ..
mg 开始抓取 ..
iqy 开始抓取 ..
yk 开始抓取 ..
mg 抓取完毕,耗时 1 分钟 6 秒
yk 抓取完毕,耗时 3 分钟 56 秒
iqy 抓取完毕,耗时 8 分钟 4 秒
qq 抓取完毕,耗时 65 分钟 2 秒

========== 2016-07-14 06:00:03 ===========

qq 开始抓取 ..
mg 开始抓取 ..
iqy 开始抓取 ..
yk 开始抓取 ..
mg 抓取完毕,耗时 1 分钟 1 秒
yk 抓取完毕,耗时 2 分钟 43 秒
iqy 抓取完毕,耗时 6 分钟 48 秒
qq 抓取完毕,耗时 20 分钟 16 秒


大家可以注意下 QQ 的时间,大部分时间爬虫抓取的时候花费时间都很高,但是每天 6 点的时候花费的时间就比较低。是不是因为 6 点人比较少,所以腾讯视频放开了流量限制?

说下我调试时候的具体情况
1 print result.text 的时候,基本上有时候 500 个字符需要打印 1 秒钟,如果是 5000 个字符的话,需要好几秒才能打印完成。
2 抓取 qq 经常会抛出 time_out 异常,但是在本地跑代码就基本不会抛这个 time_out 异常。我现在的 time_out 设置的是 10 秒钟。我怀疑是不是 qq 对我服务器的 ip 做了流量限制和连接数限制。

最后是通过更换代理 ip 来解决?还是多开启线程同时抓取(个人觉得多线程并不能解决这个问题)?还是怎么解决呢?
谢谢大家了。
2228 次点击
所在节点    问与答
3 条回复
ytmsdy
2016-07-14 09:31:08 +08:00
要看你的抓取量的,如果不是特别大的爬虫任务。其实单线程就可以了,稳定,不延时,不容易出现 503 。目前我的任务都是单线程任务。
checgg
2016-07-14 09:40:38 +08:00
@ytmsdy 抓取量不大,一次大概也就几万条数据。但是服务器上 QQ 爬虫一直在抛 time_out 异常。
是腾讯对 ip 做了限制吗?
个人尝试过更换不同的 http 头并没有用。
看来只能换 IP 了,等我有空换好 IP 之后再来细说吧。
ytmsdy
2016-07-14 10:28:19 +08:00
@checgg 用单线程任务试试看吧,要看你抓的是什么业务,如果是单纯的新闻页面,你单线程跑一般上来说不会有问题的,如果他做过防采集策略的,那就只能换 ip 了。

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

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

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

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

© 2021 V2EX