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
davidlau
V2EX  ›  Python

新浪微群爬虫/微博爬虫 附带用户关系爬虫

  •  
  •   davidlau ·
    liuslevis · 2014-05-05 13:41:07 +08:00 · 4134 次点击
    这是一个创建于 3670 天前的主题,其中的信息可能已经有所发展或是发生改变。
    毕业设计的一部分,注释详细,多线程增量式爬取,用到Python+SQLite。
    如觉有用请Star,谢谢!
    https://github.com/liuslevis/weiquncrawler
    9 条回复    2014-05-07 11:00:51 +08:00
    aisensiy
        1
    aisensiy  
       2014-05-05 14:13:36 +08:00
    wap 也有反爬虫机制的吧,我抓了2000页的微博就不能抓了,要过些时候才可以,楼主有什么办法么
    Linxing
        2
    Linxing  
       2014-05-05 15:39:33 +08:00   ❤️ 1
    @aisensiy 可以学习下大胆晒的爬虫,用 http://www.samair.ru/proxy-by-country/China-01.htm 上面的代理
    dong3580
        3
    dong3580  
       2014-05-05 15:54:35 +08:00
    @aisensiy
    模拟浏览器登录行为,一定要补全所有的user-agent,并且,不要一直爬,多线程速度太快了,容易被封ip,可以选择性的使用单线程,另外加个时间间隔,每爬固定页数暂停几分钟。
    aisensiy
        4
    aisensiy  
       2014-05-05 16:06:54 +08:00
    @dong3580 我用的 scrapy 添加了每秒 10 个请求的限制~但似乎还是不可避免。
    dong3580
        5
    dong3580  
       2014-05-05 16:20:10 +08:00
    @aisensiy
    我用的C#爬。。。不过都是爬几个小时休1个小时,不然容易被封。而且只开一个线程,太多线程电脑没法看网页了。
    你算算每秒10个请求,假设成功,也就是10个页面,假设一个页面100K,10个就是1000K,一分钟就是1000x60=60 000K,大约60M,一小时就是 60x60=3600M,大约3.6G,这还不算其他人,就你一个人每小时需要下载微博上纯html 数据3.6G,你让人家服务器饶你么,直接关你到小黑屋。
    aisensiy
        6
    aisensiy  
       2014-05-05 17:25:49 +08:00
    @dong3580 嗯 我算过 我其实是侥幸心理 我想关掉所有限制 然后在很短时间内把东西抓完...因为我是那种一次性工作,不需要持续抓取 T_T
    davidlau
        7
    davidlau  
    OP
       2014-05-05 21:25:23 +08:00
    @aisensiy
    a)一般20分钟被block,(程序给予提示,自动停止), 手动切代理换IP 用goagent
    b)换完IP后 马上爬某些页面(尤其是总N页的中间部分N/2)会失效,猜测一个新的用户突然频繁访问中间的几页概率小,所以Block。这种情况随机慢速顺序N/2附近部分页面,模仿正常用户访问;直到有有效页面返回,再从N/2开始爬。
    c)再不行,去喝杯茶 40Min后回来继续
    d)在不行,2h后回来

    熟悉这个pattern,并且有大量IP代理,可以用自定义脚本操纵爬虫爬取
    pyshift
        8
    pyshift  
       2014-05-05 23:28:04 +08:00
    巧了。爬虫这么受欢迎,都选这个做毕设吗。我这边用的python/java+mysql的,因为想多了解下python就用python也写了一份,程序大同小异。但是我的单线程,而且爬取的手动加参数约束下。要不太快被封好蛋疼。
    davidlau
        9
    davidlau  
    OP
       2014-05-07 11:00:51 +08:00
    @pyshift 用它来学习python、数据库、网络知识,是不错的选择
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2944 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:58 · PVG 12:58 · LAX 21:58 · JFK 00:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.