开源一个 python 脚本驱动的定向爬虫 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
binux
V2EX    分享创造

开源一个 python 脚本驱动的定向爬虫

  •  6
     
  •   binux
    binux 2014-03-09 16:53:56 +08:00 16865 次点击
    这是一个创建于 4236 天前的主题,其中的信息可能已经有所发展或是发生改变。
    python爬虫绝大多数都是定向抓取,并进行一定程度的结构化解析

    这套爬虫设计采用python脚本驱动抓取动作,适用于各类页面(要实现通用爬虫也没问题)
    经过实践证明好用的更新调度机制,以及灵活稳定的抓取环模型
    辅以 WEB 化的脚本编写、调试、监控,看图你就懂了:



    这套爬虫是我一年多前设计开发的,抓取200个站点,在至少2个商业环境中运行,现在在Apache协议下重写开源。希望能终结各种自己写python爬虫的必要。

    github项目: https://github.com/binux/pyspider
    快速开始: https://github.com/binux/pyspider/wiki/Quickstart
    其他更详细的文档: https://github.com/binux/pyspider/wiki
    第 1 条附言    2014-03-09 22:10:47 +08:00
    由于目前仅在 Linux/OSX with python2.7 环境下测试通过,如果您没有环境
    可以在 https://koding.com/R/binux(推荐链接) 申请到一台 ubuntu 的临时开发环境

    sudo apt-get install python-dev python-pip libxml2-dev libxslt-dev libz-dev python-pycurl
    git clone https://github.com/binux/pyspider.git
    cd pyspider
    sudo pip install -r requirements.txt
    sed -i "s/app.run()/app.run('0.0.0.0')/" run.py
    ./run.py

    然后访问 http://<username>.kd.io:5000/
    第 2 条附言    2014-03-10 13:06:39 +08:00
    现在手上没有使用场景,如果有持续运营的实例,可以提供支持
    55 条回复    2016-02-16 22:37:31 +08:00
    yanwen
        1
    yanwen  
       2014-03-09 17:00:19 +08:00
    支持一个。
    alexapollo
        2
    alexapollo  
       2014-03-09 17:09:20 +08:00
    看起来还不错~
    hhrmatata
        3
    hhrmatata  
       2014-03-09 17:09:54 +08:00
    有web调试和监控,看起来很不错
    arbipher
        4
    arbipher  
       2014-03-09 17:14:37 +08:00
    赞!
    抓取200个站点,求加到wiki上。
    hadoop
        5
    hadoop  
       2014-03-09 17:48:11 +08:00
    赞!
    9hills
        6
    9hills  
       2014-03-09 18:03:47 +08:00
    支持一下
    binux
        7
    binux  
    OP
       2014-03-09 18:49:44 +08:00
    @arbipher 以前的脚本放出来不好。。而且不兼容了
    arbipher
        8
    arbipher  
       2014-03-09 19:04:21 +08:00
    @binux 说的也是,但是就这个是比较恶心的地方。。。
    exoticknight
        9
    exoticknight  
       2014-03-09 19:09:19 +08:00
    其实是终结各种我们大家写python爬虫的必要……
    RIcter
        10
    RIcter  
       2014-03-09 19:42:56 +08:00
    请手下我的膝盖...已感谢
    figo
        11
    figo  
       2014-03-09 20:08:15 +08:00
    看起来不错
    chon
        12
    chon  
       2014-03-09 20:35:31 +08:00
    从BYR论坛过来支持一下~
    moroumo
        13
    moroumo  
       2014-03-09 20:40:43 +08:00
    支持啊,我也用scrapy写过一个简单的
    caomu
        14
    caomu  
       2014-03-10 00:08:13 +08:00
    手机上手动回复点赞加马克。。。
    forever139
        15
    forever139  
       2014-03-10 08:57:26 +08:00
    支持下
    lj0014
        16
    lj0014  
       2014-03-10 10:27:41 +08:00
    自带webui非常不错
    nealv2ex
        17
    nealv2ex  
       2014-03-10 11:32:37 +08:00
    看了一上午了,我的python果真是战5渣。
    spritevan
        18
    spritevan  
       2014-03-10 11:36:52 +08:00
    这个 webui 好丑啊
    binux
        19
    binux  
    OP
       2014-03-10 11:38:00 +08:00
    @spritevan 帮我改啊
    spritevan
        20
    spritevan  
       2014-03-10 11:41:08 +08:00
    只会说不会改啊 (^ω^)
    cooiky
        21
    cooiky  
       2014-03-10 13:07:47 +08:00
    这个长时间抓,会被目标站ban掉么
    binux
        22
    binux  
    OP
       2014-03-10 13:08:25 +08:00
    @cooiky 有流量控制 和 代理支持
    sjrong
        23
    sjrong  
       2014-03-10 13:51:28 +08:00
    我已经通过贡献1GB空间来支持啦 呵呵~
    yupeng
        24
    yupeng  
       2014-03-10 14:19:37 +08:00
    赞,支持一下
    primer
        25
    primer  
       2014-03-10 14:42:22 +08:00
    楼主你好,你这款爬虫适用于非结构式的网页信息爬取吗?

    还有如果我想爬取Google play商店上APP下的所有用户评论,能做到吗? 谢谢楼主!
    binux
        26
    binux  
    OP
       2014-03-10 15:39:15 +08:00
    @primer 可以,如果要所有的,需要分析出翻页的url
    simapple
        27
    simapple  
       2014-03-10 16:47:50 +08:00
    顶起
    manhere
        28
    manhere  
       2014-03-10 16:52:35 +08:00
    @binux 你那个推广链接识别错误,汉字连一块了
    binux
        29
    binux  
    OP
       2014-03-10 17:22:19 +08:00
    @manhere 不能改没辙啊。。
    vaneoooo
        30
    vaneoooo  
       2014-03-10 18:27:09 +08:00
    @primer 抓这个作用在于?
    run2
        31
    run2  
       2014-03-10 18:33:39 +08:00
    很牛的样子,请问如果采集到了一个索引页,怎么把索引页里的url自动加到task里?并调用不同的Handler
    binux
        32
    binux  
    OP
       2014-03-10 19:09:27 +08:00   1
    @sobigfish self.crawl 用于创建 task,这里设计上不是通过不同的 Handler,而是不同的 callback函数来区分的。一个 Handler 固定处理同一个站点(project)的各类页面。
    如果确有必要跨 Handler,第二里程碑会实现 send_message 特性可以实现。
    darklowly
        33
    darklowly  
       2014-03-11 14:51:01 +08:00 via iPhone
    一天写5个爬虫,有什么好开源节流的价值?
    darklowly
        34
    darklowly  
       2014-03-11 14:52:45 +08:00 via iPhone
    定向爬一天可以写几十个
    binux
        35
    binux  
    OP
       2014-03-11 15:30:39 +08:00
    @darklowly 然后你怎么管理这几十个?怎么知道哪些挂了?
    zhkzyth
        36
    zhkzyth  
       2014-03-11 23:14:29 +08:00
    拜读过lz的代码,赞~
    leveraging
        37
    leveraging  
       2014-03-12 14:18:35 +08:00
    @darklowly 能省一天是一天啊。
    chens
        38
    chens  
       2014-03-17 17:57:39 +08:00
    @binux 请教下啥叫作抓取环模型?
    binux
        39
    binux  
    OP
       2014-03-17 18:40:14 +08:00
    @chens 你知道流式吗?把它的头和尾连起来就是环了。

    blog上有张图
    chens
        40
    chens  
       2014-03-17 21:11:00 +08:00
    @binux http://blog.binux.me/assets/image/pyspider-arch.png
    看明白了,多谢啦。
    多问一句,用QQ或者gtalk之类的IM吗?有抓取相关问题请教。:-)
    chau
        41
    chau  
       2014-03-18 11:06:22 +08:00
    @binux sudo pip install -r requirements.txt 这句的时候 SLLError:The read operation timed out
    binux
        42
    binux  
    OP
       2014-03-18 11:08:26 +08:00
    @chau 网络问题,试试aliyun的镜像 http://mirrors.aliyun.com/help/pypi
    chau
        43
    chau  
       2014-03-18 11:55:39 +08:00
    @binux 小白一名,求详细步骤
    binux
        44
    binux  
    OP
       2014-03-18 12:32:24 +08:00
    @chau help/pypi 不就是详细步骤吗?
    chau
        45
    chau  
       2014-03-18 13:43:13 +08:00
    @binux ~/.pip/pip.conf 目录下面没有这个文件......
    binux
        46
    binux  
    OP
       2014-03-18 14:05:36 +08:00
    @chau 创建一个
    myAngel
        47
    myAngel  
       2014-03-23 23:03:12 +08:00
    有一个网站,需要帮个忙。马化腾:156224301
    tobyzhong
        48
    tobyzhong  
       2014-03-24 22:36:49 +08:00
    http://v2ex.com/t/104723#reply21 求高人给点提示
    guotie
        49
    guotie  
       2014-03-26 10:34:29 +08:00
    学习一下
    sgissb1
        50
    sgissb1  
       2014-06-02 13:35:01 +08:00
    小哥,我真心想了解你的爬虫,别这样~~~~我很伤心的
    sgissb1
        51
    sgissb1  
       2014-06-02 13:38:37 +08:00
    在这里给你说了,其实我不想搞爬虫这块的学习。我倒是想通过爬虫弄点素材,来研究研究,是这样的。

    我主要是为了拿到页面然后分析。手动去搞主要是不懂web开发,另外我需要的样本很多,手工。。。你懂的
    chuangbo
        52
    chuangbo  
       2014-07-17 18:18:47 +08:00   1
    实在是太好用了
    Lycnir
        53
    Lycnir  
       2014-12-03 17:42:27 +08:00
    赞一个
    wico77
        54
    wico77  
       2016-01-25 16:19:06 +08:00
    @binux 我安装后怎么 web 调试功能出不来?
    commoccoom
        55
    commoccoom  
       2016-02-16 22:37:31 +08:00
    @binux 请问 怎吗删除已经创建了的 project 我是在本地运行的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     945 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 20:07 PVG 04:07 LAX 13:07 JFK 16:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86