V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
SummerSun
V2EX  ›  Python

如何突破豆瓣爬虫限制频率?

  •  
  •   SummerSun · 2016-03-03 12:56:36 +08:00 · 26798 次点击
    这是一个创建于 3169 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近老师给了一个课题---豆瓣好友推荐。要做推荐,当然首先是要搜集豆瓣数据了。
    于是,我收集了 3000 多个豆瓣用户首页的 url ,接着就是对这 3000 多个用户所看过电影相关信息的爬取了。
    然后,问题出现了!
    我用 python 写了程序,开了 4 个线程,对豆瓣电影信息进行异步爬取,一分钟可以 get230 多个页面,觉得效率还不错嘛。但是,没过多久,就 403forbidden 了!!!豆瓣把我 ip 禁了,不能爬虫了。
    然后我在网络上搜索相关资料,发现豆瓣对访问频率做了限制,一分钟最多大概只能访问 40 次左右。
    现在,我降低了爬取频率,正在龟速爬取中……
    这是我第一次 python 网络爬虫,请问有没有什么方法可以突破豆瓣的爬虫限制,让我能够愉快的爬虫,谢谢各位前辈了。

    27 条回复    2019-12-30 23:22:47 +08:00
    jugelizi
        1
    jugelizi  
       2016-03-03 12:58:07 +08:00
    都搜索资料了不知道用代理吗?
    wzymmy
        2
    wzymmy  
       2016-03-03 13:05:41 +08:00
    用代理吧,网上免费的代理服务器蛮多的
    liberize
        3
    liberize  
       2016-03-03 13:22:35 +08:00
    用带 bid (可以伪造)的 cookie 去访问,不会 40x ,但是频率高的时候会让输验证码,验证码还是很好搞定的,都是英文单词,而且词库有限。
    wmttom
        4
    wmttom  
       2016-03-03 13:29:15 +08:00
    做好 cookie UA 伪装,豆瓣带 cookie 的抓取保持一定节奏不会被 403 ,会跳转验证码,把验证码简单二值化然后扔给开放的 OCR API ,然后走下英文单词纠错(豆瓣验证码基本都是英文单词),自动识别率基本是超过 30%
    找到这个节奏的最大并发限制,然后慢慢抓,不行可以开多 ip 代理这么抓。
    几个月前抓豆瓣基本是这么写的。先大概计算下需要抓的页面数量级,有时候 1 秒一个页面,慢慢抓,抓几天也能满足需要,不行再上代理。
    lucifer4he
        5
    lucifer4he  
       2016-03-03 13:39:06 +08:00   ❤️ 1
    可以用 I2P 匿名网络。都不用收集代理服务器列表了。他有 API 可以用,跳数弄少一点 1 跳之类的。反正也不是需要强匿名。这样就自带各种 IP 了=。=
    lucifer4he
        6
    lucifer4he  
       2016-03-03 13:40:15 +08:00
    或者可以用 tor,虽然我不太了解,其实同理 I2P
    tonyVex
        7
    tonyVex  
       2016-03-03 13:41:22 +08:00
    代理换 ip 伪装头信息等
    CrazySpiderMan
        8
    CrazySpiderMan  
       2016-03-03 13:41:54 +08:00
    @liberize liberize 说得对, 看我写的豆瓣爬虫. 能突破限制: https://github.com/Fuck-You-GFW/doubanspiders
    lucifer4he
        9
    lucifer4he  
       2016-03-03 13:43:48 +08:00
    @CrazySpiderMan 哈哈哈,在关注你 P2P 爬虫
    CrazySpiderMan
        10
    CrazySpiderMan  
       2016-03-03 13:48:51 +08:00
    @lucifer4he 欢迎 PR 呀.
    em70
        11
    em70  
       2016-03-03 13:53:08 +08:00   ❤️ 3
    豆瓣是按频率封的,白天一分钟不能超过 40 次请求,晚上不能超过 100 次请求,每次请求间隔 1 秒,就肯定没问题
    abelyao
        12
    abelyao  
       2016-03-03 14:19:27 +08:00
    看来大家抓豆瓣抓得都很有心得…
    laoyuan
        13
    laoyuan  
       2016-03-03 14:23:53 +08:00
    你们不要这么详细的说出来好么。。。
    vwhenx
        14
    vwhenx  
       2016-03-03 14:23:58 +08:00   ❤️ 1
    sunchen
        15
    sunchen  
       2016-03-03 14:29:34 +08:00
    使用豆瓣 API 然后用直接豆瓣某个 APP 的 key ,在不触发某些特定 API 的情况下无限制爬取。
    feather12315
        16
    feather12315  
       2016-03-03 14:36:52 +08:00 via Android
    启发了我。在读集体智慧编程,愁怎么搞 delicious 的数据呢( API 变化了,得出来的数据缺少 user ),哈,现在直接上豆瓣得了
    sunjourney
        17
    sunjourney  
       2016-03-03 15:29:45 +08:00   ❤️ 2
    每年开学,就有人爬豆瓣,然后豆瓣就各种不明地 down 掉了。豆瓣运维说,怎么每年这个时候网费都这么高?
    mcone
        18
    mcone  
       2016-03-03 15:36:32 +08:00
    你们这么光明正大的说怎么爬豆瓣 就不怕豆瓣的人看到之后有针对性的反爬吗…………

    话说现在一提到豆瓣就想到强制绑定手机号的下三滥手段,曾经的文艺小清新在用户 profile 面前照样吃相难看……
    tobacco
        19
    tobacco  
       2016-03-03 15:56:05 +08:00
    dyingbleed
        20
    dyingbleed  
       2016-03-04 00:05:22 +08:00
    @CrazySpiderMan GitHub 用户名碉堡了~
    CrazySpiderMan
        21
    CrazySpiderMan  
       2016-03-04 00:43:47 +08:00
    @dyingbleed 嘘, 别说话. 赞我.
    kamen
        22
    kamen  
       2016-03-04 05:54:05 +08:00 via Android
    到时候豆瓣崩了,你可是要负责任的(ー_ー;)
    SummerSun
        23
    SummerSun  
    OP
       2016-03-04 09:43:32 +08:00
    谢谢大家的指导,现在我已经突破频率了!用的是代理加浏览器伪装!
    jin6220
        24
    jin6220  
       2016-11-01 22:11:47 +08:00
    @SummerSun 什么代理啊?高匿的?
    bubu2bu
        25
    bubu2bu  
       2017-02-16 13:18:56 +08:00
    @SummerSun 楼主如何解决的 可否分享下核心代码 我也遇到 403 forbidden 多谢
    mztkenan
        26
    mztkenan  
       2018-04-05 17:35:12 +08:00
    豆瓣是如何辨认电脑的,通过 IP ??不太可能我这是校园网,莫不是把校园网出口封了??
    QUIOA
        27
    QUIOA  
       2019-12-30 23:22:47 +08:00 via Android
    @CrazySpiderMan 你的项目呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3494 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:43 · PVG 18:43 · LAX 02:43 · JFK 05:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.