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

求爬虫爬一个大型天涯帖子的加速办法

  •  
  •   tao1991123 · 2015-05-29 09:15:17 +08:00 · 6270 次点击
    这是一个创建于 3473 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    天涯有一个帖子,作者在上面更新自己的某部小说。持续更新了好几年。前两天通过作者的微博得知更完了,但是由于更贴时间太长,这个帖子的灌水回复太多,现在已经有2500多页(注意不是2500楼,是2500页)。

    问题

    现在希望把作者的内容通过爬虫爬下来,保存为TXT。以前y用Python写过一个爬天涯的爬虫,为了防封IP用的是最笨的办法

    time.sleep(1)

    小贴很好办,但是这个2500楼的帖子,真心等不起。

    请求

    求一个可以快点把帖子爬完的办法

    26 条回复    2015-05-31 11:57:21 +08:00
    hambut
        1
    hambut  
       2015-05-29 09:17:34 +08:00
    http://www.tianyatool.com/ 只看楼主,再抓呗。。
    tao1991123
        2
    tao1991123  
    OP
       2015-05-29 09:20:15 +08:00
    @hambut 不行即使这样还是有1400多页
    ob
        3
    ob  
       2015-05-29 09:26:08 +08:00
    一页一页爬啊,还要怎么加速?一次性的?
    jedyu
        4
    jedyu  
       2015-05-29 09:27:34 +08:00
    代理、分页多线程/多进程
    pimin
        5
    pimin  
       2015-05-29 09:31:33 +08:00 via iPhone
    1400页还要加速?
    哪些资源采集的不得用超级计算机啦
    ooh
        6
    ooh  
       2015-05-29 09:32:38 +08:00
    1400也闲多?
    sacuba
        7
    sacuba  
       2015-05-29 09:41:55 +08:00
    2500页 一天应该没问题吧
    matrix67
        8
    matrix67  
       2015-05-29 09:50:38 +08:00 via Android
    1400秒不到半小时啊
    gxm123gxm
        9
    gxm123gxm  
       2015-05-29 09:59:03 +08:00
    lz要不直接贴代码?
    fnd
        10
    fnd  
       2015-05-29 10:19:33 +08:00
    1400页真不多。
    ericls
        11
    ericls  
       2015-05-29 10:28:42 +08:00
    呃 异步爬虫 两分钟啊
    iam36
        12
    iam36  
       2015-05-29 10:42:37 +08:00
    @ericls
    tao1991123
        13
    tao1991123  
    OP
       2015-05-29 10:43:54 +08:00
    @ericls 求详细实现思路
    lch21
        14
    lch21  
       2015-05-29 10:49:44 +08:00
    搞一堆代理ip爬
    touch
        15
    touch  
       2015-05-29 11:06:06 +08:00   ❤️ 1
    1400页还要加速,1400页也就分分钟的事吧
    wesley
        16
    wesley  
       2015-05-29 11:17:54 +08:00
    去爬wap版要容易很多
    shoumu
        17
    shoumu  
       2015-05-29 11:18:10 +08:00
    楼主是哪个帖子,让大家都来爬爬,看谁能够用时最短爬完。
    est
        18
    est  
       2015-05-29 11:23:55 +08:00
    2500楼,time.sleep(1) ,也就一个小时就抓完了啊。
    Mutoo
        19
    Mutoo  
       2015-05-29 11:27:46 +08:00
    等这帖子回复的时间,早爬完了。
    tao1991123
        20
    tao1991123  
    OP
       2015-05-29 11:40:14 +08:00
    @Mutoo 追求更快更好,反正有个这需求,真好借这个机会学习提高一下 有何不好?
    mV2GK
        21
    mV2GK  
       2015-05-29 11:41:51 +08:00
    用scrapy爬会好点吧。。。
    anexplore
        22
    anexplore  
       2015-05-29 11:43:10 +08:00
    到这上面挑几个速度较快的高匿名代理,多开几个进程,http://www.proxy.com.ru/
    mahone3297
        23
    mahone3297  
       2015-05-29 12:22:00 +08:00
    爬的太快,不怕被ban?
    单机,必须要慢慢爬啊。。。
    abelyao
        24
    abelyao  
       2015-05-29 12:38:46 +08:00
    @tao1991123

    这帖子没几个人是站在楼主这种学习的角度去思考的,而是觉得 1400+ 秒能爬完就完了,万一下次遇到一篇 14000+ 秒的呢?

    我对 python 不熟,但是爬虫的思路基本是一直的,无关语言。
    首先用 sleep 来卡 1 秒是完全没必要的,这直接影响了爬虫效率。
    要防止被 ban 无非就是不断换 IP 地址、user-agent 等等这些识别信息。
    多线程并发是肯定要的,保证了你一秒钟可以多爬几个页面,那效率就翻倍提升了。
    omph
        25
    omph  
       2015-05-29 12:51:49 +08:00
    imlonghao
        26
    imlonghao  
       2015-05-31 11:57:21 +08:00 via Android
    @omph pyspider不服
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2572 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:02 · PVG 13:02 · LAX 21:02 · JFK 00:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.