V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
binux
V2EX  ›  分享创造

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

  •  6
     
  •   binux ·
    binux · 2014-03-09 16:53:56 +08:00 · 16312 次点击
    这是一个创建于 3910 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 抓这个作用在于?
    sobigfish
        31
    sobigfish  
       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的代码,赞~
    vigoss
        37
    vigoss  
       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   ·   实用小工具   ·   3051 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:55 · PVG 20:55 · LAX 04:55 · JFK 07:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.