V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
checgg
V2EX  ›  问与答

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

  •  2
     
  •   checgg · 2016-07-14 09:26:33 +08:00 · 2232 次点击
    这是一个创建于 3057 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不能上图,我直接复制吧。
    ========== 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 来解决?还是多开启线程同时抓取(个人觉得多线程并不能解决这个问题)?还是怎么解决呢?
    谢谢大家了。
    3 条回复    2016-07-14 10:28:19 +08:00
    ytmsdy
        1
    ytmsdy  
       2016-07-14 09:31:08 +08:00
    要看你的抓取量的,如果不是特别大的爬虫任务。其实单线程就可以了,稳定,不延时,不容易出现 503 。目前我的任务都是单线程任务。
    checgg
        2
    checgg  
    OP
       2016-07-14 09:40:38 +08:00
    @ytmsdy 抓取量不大,一次大概也就几万条数据。但是服务器上 QQ 爬虫一直在抛 time_out 异常。
    是腾讯对 ip 做了限制吗?
    个人尝试过更换不同的 http 头并没有用。
    看来只能换 IP 了,等我有空换好 IP 之后再来细说吧。
    ytmsdy
        3
    ytmsdy  
       2016-07-14 10:28:19 +08:00
    @checgg 用单线程任务试试看吧,要看你抓的是什么业务,如果是单纯的新闻页面,你单线程跑一般上来说不会有问题的,如果他做过防采集策略的,那就只能换 ip 了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1072 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:00 · PVG 04:00 · LAX 12:00 · JFK 15:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.