V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
theKingOfTerrors
V2EX  ›  PHP

请大神们推荐一些关于 php 网络爬虫的书

  •  
  •   theKingOfTerrors · 2015-12-07 14:51:47 +08:00 · 7251 次点击
    这是一个创建于 3281 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟的公司需要我去研究爬虫,但是网上的资料太过零散,买了一本《 WEBBOTS 、 SPIDERS 和 SCREEN SCRAPERS 技术解析与应用实践》,也从官网下载了这本书的一些 demo ,但是不知道是什么原因,一些代码运行不起来,也没有报错,也因为是中文版,所以翻译的一些地方看的不是很明白,请大神们帮忙推荐几本最好是 php 的书,小弟不会 python ,还请各位大神帮忙 推荐一些纯 PHP ,或者 php+python 入门的这些爬虫书籍,谢谢

    44 条回复    2015-12-09 15:21:16 +08:00
    knightdf
        1
    knightdf  
       2015-12-07 15:54:19 +08:00
    这还需要买书?
    ihipop
        2
    ihipop  
       2015-12-07 16:17:46 +08:00
    与其从头写 不如站在巨人 @binux 的肩膀上 https://github.com/binux/pyspider
    只要学习如何解析页面即可入门 例子一看就懂
    ryd994
        3
    ryd994  
       2015-12-07 16:37:12 +08:00 via Android
    没见过 PHP+Python 的组合
    PHP 做爬虫合适么?
    usapla
        4
    usapla  
       2015-12-07 16:40:51 +08:00
    @ryd994 我心里也是这么琢磨的一下, php 爬网页有个专门的函数 curl ,挺方便的,但是我没怎么用过
    ryd994
        5
    ryd994  
       2015-12-07 16:41:46 +08:00 via Android   ❤️ 2
    @usapla curl 方便………
    你一定没见过 urllib3 ,更没见过 requests
    usapla
        6
    usapla  
       2015-12-07 16:46:32 +08:00
    @ryd994 嗯...没有见过,因为在做 php , Python 学的不多,谢谢指点
    Moker
        7
    Moker  
       2015-12-07 16:47:22 +08:00   ❤️ 1
    php 的话 你可以去看下 phpquery
    iyaozhen
        8
    iyaozhen  
       2015-12-07 16:50:16 +08:00
    @ryd994 额,我感觉 curl 很方便的,什么事都能干。还请指教。
    当然我没做过大规模的爬虫。而且受环境限制 Python 只用过 urllib 、 urllib2 ,感觉不是很方便。
    iyaozhen
        9
    iyaozhen  
       2015-12-07 16:52:29 +08:00
    @Moker 这东西很好,另外强烈推荐: https://github.com/bupt1987/html-parser
    matsuijurina
        10
    matsuijurina  
       2015-12-07 16:58:23 +08:00   ❤️ 1
    PHP 并不是最适合写爬虫工具的语言。一定要用的话,推荐这本书 《 PHP Web Scraping 》。不过我觉得你迟早会回过头来找 python 的 beautifulsoup ,以及 javascript 的 phantomjs 的
    theKingOfTerrors
        11
    theKingOfTerrors  
    OP
       2015-12-07 17:25:02 +08:00
    @matsuijurina 谢谢,我看到了这本书,但是只找到了英文版,我的英语水平勉勉强强,看这种书,会很难理解,有中文版吗
    theKingOfTerrors
        12
    theKingOfTerrors  
    OP
       2015-12-07 17:26:14 +08:00
    @knightdf 菜鸟一枚,之前都没有弄过这些东西,还希望能够多多指教
    shyling
        13
    shyling  
       2015-12-07 17:26:56 +08:00
    @ryd994 curl 不方便吗=。=
    zjyExcelsior
        14
    zjyExcelsior  
       2015-12-07 17:48:47 +08:00
    大神们一般会告诉你 -> 用 Python
    jiehuangwei
        15
    jiehuangwei  
       2015-12-07 18:00:43 +08:00
    用PHP写也还行,看个人的熟练程度了,大型的爬虫系统不局限于开发语言,而在于架构,通常说的爬虫大部分是抓取网页内容而已,用什么语言关系不是太大
    lydhr
        16
    lydhr  
       2015-12-07 18:04:15 +08:00
    scrapy
    theKingOfTerrors
        17
    theKingOfTerrors  
    OP
       2015-12-07 18:04:30 +08:00
    @lydhr 这是什么东西
    theKingOfTerrors
        18
    theKingOfTerrors  
    OP
       2015-12-07 18:05:02 +08:00
    @jiehuangwei 就是因为不会啊,烦透了,买了一本书,里面有的 demo 不知道什么鬼
    lydhr
        19
    lydhr  
       2015-12-07 18:05:44 +08:00   ❤️ 1
    @theKingOfTerrors 一个 framework ,教程很详细的[link]( http://scrapy.org/)
    xiasix
        20
    xiasix  
       2015-12-07 18:08:45 +08:00
    curl 多线程+phpquery 研究透了 做爬虫没问题
    theKingOfTerrors
        21
    theKingOfTerrors  
    OP
       2015-12-07 18:11:20 +08:00
    @lydhr 嗯, thanks
    theKingOfTerrors
        22
    theKingOfTerrors  
    OP
       2015-12-07 18:15:33 +08:00
    @xiasix 麻烦问一下,您手里有没有资料,这样能给我省一些时间,谢谢
    Moker
        23
    Moker  
       2015-12-07 18:19:44 +08:00
    @iyaozhen 感觉这货就是 simple dom 和 phpquery 的杂合体
    yytsjq
        24
    yytsjq  
       2015-12-07 18:56:32 +08:00
    PHP 命令行模式 + Simple HTML DOM Parser
    ryd994
        25
    ryd994  
       2015-12-07 19:04:21 +08:00
    @iyaozhen
    @shyling 看用途咯。
    curl 确实万能,基本上 linux 下大多数 http client 都是基于 libcurl 。但是太底层了,有些比较方便的功能没有,比如连接池。长连接对爬虫还是比较需要的。
    我个人其实用 urllib3 多一点,因为主要是写代理, request 包装太多。
    xiaoyu9527
        26
    xiaoyu9527  
       2015-12-07 19:42:03 +08:00
    我也没找到 python 的爬虫教程(或者没找到比较完善的,感觉都是一部分一部分的教)
    HentaiMew
        27
    HentaiMew  
       2015-12-07 19:52:24 +08:00
    那些说爬虫简单的... 其实你们在写“轮循 HTTP 请求”,不能算爬虫。
    knightdf
        28
    knightdf  
       2015-12-07 19:53:33 +08:00
    @theKingOfTerrors 你就想着如何模拟人去浏览网页就行了
    sun2920989
        29
    sun2920989  
       2015-12-07 20:18:33 +08:00
    找个美女图片的网站练手,动力满满
    TaMud
        30
    TaMud  
       2015-12-07 21:20:37 +08:00
    PHP -> CURL + PHPQUERY
    BAIDU -> PHP CURL 多线程

    url -> http://blog.phpdr.net/curl%E5%A4%9A%E7%BA%BF%E7%A8%8B.html
    shuimugan
        31
    shuimugan  
       2015-12-07 21:53:54 +08:00
    推荐一个封装 curl 的库
    https://github.com/rmccue/Requests

    处理 html 的话就是 phpquery 了

    php 做爬虫的话,主要是多进程没有好用的库,多线程倒是有 pthreads,其它像解析 js 可以用 phantomjs,验证码可以接打码平台或者写个小 python 脚本来处理...反正都能东拼西凑玩得不错

    其实最主要的还是要看你公司是需要怎么样的爬虫,比如是否定向站点爬取啊,爬取目标是否有反爬手段啊,爬取目标数据量级啊,这些都确定下来才好下一步的讨论
    uuspider
        32
    uuspider  
       2015-12-07 22:37:53 +08:00
    @usapla shell 里也有 curl ,也可以爬网页,也可以称得上功能强大,但是要做真正的爬虫,还是得 python
    iyaozhen
        33
    iyaozhen  
       2015-12-08 01:04:53 +08:00
    @Moker 但这个性能确实不错,作者也有在维护。一直在用
    iyaozhen
        34
    iyaozhen  
       2015-12-08 01:09:52 +08:00
    @ryd994 嗯,是的。看来要多实践一下
    lenran
        35
    lenran  
       2015-12-08 02:13:26 +08:00
    你需要{
    "PHP 爬虫库 1":"PHPCrawl",
    "PHP 爬虫库 2":"Goutte",
    "PHP_robot1":"Web Spider",
    "PHP_robot2":"Snoopy",
    "PHP_robot3":"PhpDig",
    }
    libook
        36
    libook  
       2015-12-08 11:27:03 +08:00
    如果只是想快速开发爬虫的话就用第三方库吧,楼上的大牛们都列出来了;如果你对做爬虫感兴趣的话可以看看那些开源库的源代码,对理解 HTTP 协议和前端技术有很大帮助。最后建议学的时候着重理解思想,因为思想在任何一个语言下都可以用的。另外有一个小窍门,就是如果你想找某一功能的代码或类库直接去 github 上搜索相关关键字就可以了,有的时候会有意外惊喜。
    :-p s. 你确定不学学 python ? python 的爬虫技术可是出了名的强大和成熟。
    :-p :-p s. 好吧,我本人也不怎么用 python ,我都是用 nodejs 的,只是因为可以直接实例化成 Document Object 像在浏览器里操作那样直接用 js 操作,另外也可以在 node 中直接用 jquery ,处理 DOM 很方便。
    theKingOfTerrors
        37
    theKingOfTerrors  
    OP
       2015-12-08 11:39:45 +08:00
    @libook 我也想学 python ,但是时间问题,我现在只能用他们说的第三方库来做,我用了我买的那本书提供的代码,然后改了一些网站参数什么的,就无法运行,给那个美国作者发邮件,估计他也看不到
    killerv
        38
    killerv  
       2015-12-08 12:05:58 +08:00
    php 做爬虫不合适,建议 python
    theKingOfTerrors
        39
    theKingOfTerrors  
    OP
       2015-12-08 13:47:14 +08:00
    @killerv 我知道 php 做爬虫不合适,但是再去学 python ,花费的时间比较长,倒不是怕花费时间,毕竟是老板吩咐的,时间长了些不合适
    TaMud
        40
    TaMud  
       2015-12-08 15:25:32 +08:00
    不要 python 了,直接上 golang
    libook
        41
    libook  
       2015-12-08 16:11:33 +08:00
    @theKingOfTerrors 如果用的库并不冷门的话其实是可以在 Stack Overflow 上搜到答案的,没有的话也可以自己在 Stack Overflow 上提问,类似于国内的 CSDN 问答,好多开发者都会在 Stack Overflow 上关注自己参与开发的项目的相关问题的,实在不行,如果所用的库是在 github 上的可以直接提交 issue 提问。
    如果你只是快速写一个程序用个一两次的话是没什么问题了,如果把爬虫产品化的话还是学学爬虫领域的尖端技术吧,毕竟爬虫程序对效率要求挺高的。
    dowern
        42
    dowern  
       2015-12-08 17:31:08 +08:00
    Curl + PhpQuery + Swoole
    djunny
        43
    djunny  
       2015-12-08 19:13:53 +08:00
    可以看看鄙人的 spider-utils-for-php ,封装了大部分爬虫需要的核心方法:

    https://git.oschina.net/mz/spider-utils-for-php
    theKingOfTerrors
        44
    theKingOfTerrors  
    OP
       2015-12-09 15:21:16 +08:00
    @djunny ok,好的, thanks
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2698 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:09 · PVG 20:09 · LAX 04:09 · JFK 07:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.