• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wyan453351466
V2EX  ›  程序员

分享一个自己用 PHP 写的豆瓣妹子图爬虫,每日更新!

  •  1
     
  •   wyan453351466 · Jul 22, 2017 · 14471 views
    This topic created in 3242 days ago, the information mentioned may be changed or developed.

    访问地址:

    http://www.yanshuo.me/r/18douban

    感觉 PHP 的爬虫并没有比 Python 差多少啊?异步并发爬取、dom 解析什么的 PHP 做起来都毫无压力的好嘛!

    下面贴一下代码,自己封装的一个小的爬虫‘框架’(应该还称不上是框架吧,哈哈)。其实核心主要还是基于两个 composer 包,guzzlehttp/guzzle 和 symfony/dom-crawler。自己在应用层面做了一下封装,比如记录日志、断点续爬、失败请求重试、过滤重复请求、404 页面加入 URL 黑名单。

    Supplement 1  ·  Jul 23, 2017
    看到大家对开源的呼声比较高。我会在之后的一段时间内抽时间整理下代码,然后把这个爬虫框架开源的。

    感兴趣的朋友可以加群:566806792。如果框架发布会第一时间通知大家,而且会在群里不定期发放言说邀请码。

    对爬虫技术感兴趣的同学欢迎加入!
    91 replies    2017-08-16 19:42:23 +08:00
    lzhr
        1
    lzhr  
       Jul 22, 2017
    你是从哪里知道的这些小组
    duola
        2
    duola  
       Jul 22, 2017
    @lzhr 老湿司,路子多。
    hizoubin
        3
    hizoubin  
       Jul 22, 2017
    666
    wyan453351466
        4
    wyan453351466  
    OP
       Jul 22, 2017
    @lzhr 很简单啊。。你只要找到一个大尺度妹子图小组,比如“女神大本营”。然后不断地点右侧的相关小组就 OK 了。。。可以一直延伸出 N 多的相关小组。。
    akira
        5
    akira  
       Jul 22, 2017
    好像有图片是重复的
    U7Q5tLAex2FI0o0g
        6
    U7Q5tLAex2FI0o0g  
       Jul 22, 2017
    老司机。。。
    hemoely
        7
    hemoely  
       Jul 22, 2017 via Android
    老司机以后维护吗
    wyan453351466
        8
    wyan453351466  
    OP
       Jul 22, 2017
    @hemoely 这是长期维护的项目。提供刚给广大程序员的福利哈
    wyan453351466
        9
    wyan453351466  
    OP
       Jul 22, 2017
    @akira 对,这是因为有的妹子在不同的小组发了相同的帖子。然后我这边爬取到就重复了。。标题和链接无法区分,这种应该只能通过图片相似度来判定重复了。

    还没有查询相关的资料> <
    xx19941215
        10
    xx19941215  
       Jul 22, 2017
    求露珠代码学习一下啊
    ek66
        11
    ek66  
       Jul 22, 2017 via Android
    请不要害羞ᕦ(ò_óˇ)ᕤ
    imcocc
        12
    imcocc  
       Jul 22, 2017 via Android
    我们不学习你的代码,我们学习你找图的姿势(ง ˙o˙)ว
    potatowish
        13
    potatowish  
       Jul 22, 2017
    单身?
    wyan453351466
        14
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @xx19941215 以后我会抽个时间整理一下代码,出一份文档。到时候开源出来哈
    wyan453351466
        15
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @imcocc 😝
    wyan453351466
        16
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @potatowish 嗯,身份暴露了。。。
    jago
        17
    jago  
       Jul 22, 2017 via Android   ❤️ 1
    我也爬过,请不要害羞(⊙_⊙)
    wyan453351466
        18
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @jago 哈哈,老司机都懂!
    ex44559
        19
    ex44559  
       Jul 22, 2017
    我简直忍不住说一句:干得漂亮~
    zhucha
        20
    zhucha  
       Jul 22, 2017
    请问哪儿有言说邀请码呢?
    taby
        21
    taby  
       Jul 22, 2017
    屌了
    fhefh
        22
    fhefh  
       Jul 22, 2017
    我找了半天 github 地址
    maypu
        23
    maypu  
       Jul 22, 2017 via Android
    有重复的
    chengfu
        24
    chengfu  
       Jul 22, 2017 via iPhone
    这是我看各种发网站其中网站看得最久的一次,干得漂亮~
    wyan453351466
        25
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @chengfu 谢谢!
    wyan453351466
        26
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @zhucha 邀请码过段时间我会发布的哈,网站还有一些功能没做好!
    wyan453351466
        27
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @maypu 对的。这个问题是因为有的妹子在不同的小组发了相同的帖子。。。所以爬取到就重复了,后面会想办法解决!
    tgxh
        28
    tgxh  
       Jul 22, 2017 via Android
    我用 node 爬请不要害羞动不动被封 ip
    HYSS
        29
    HYSS  
       Jul 22, 2017
    不怕涉黄?
    wenzhoou
        30
    wenzhoou  
       Jul 22, 2017 via Android
    @wyan453351466 简单计算 md5 码。如果一样就不用了。或者 2 进制比较,相似度超过 80%就舍弃
    ericgui
        31
    ericgui  
       Jul 22, 2017
    代码的 GitHub 地址呢?
    fuxkcsdn
        32
    fuxkcsdn  
       Jul 22, 2017 via iPhone
    python 主要有成熟的分布式爬虫框架可用,bs 解析 html 也容易上手,速度也快(至少和 php 的类似程序对比,那快多了)
    guzzle 个人感觉比 requests 好用多了(速度上没做过对比)
    natforum
        33
    natforum  
       Jul 22, 2017
    汤不热比这多,质量杠杆的
    wyan453351466
        34
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @HYSS 这种不算涉黄吧😓 又没有露点什么的。露点的内容程序会同步豆瓣原贴删除的
    wyan453351466
        35
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @fuxkcsdn 解析 HTML 上效率没有对比过,但是功能上 php 中 dom-crawler 的功能和 python 的一些包是一样的,都支持 css-selector 和 xpath。guzzle 的功能很强大,各种情况都考虑进去了,header、cookies 就不用说了,并发爬取也封装的很好的。一般来说爬取瓶颈都在目标网站是否有反爬虫机制,如果没有,开 100 个线程并发爬取速度超快的 (•͈˽•͈)
    wyan453351466
        36
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @wenzhoou 嗯,主要是需要对比图片相似度。标题妹子们起的都不一样。。。
    HYSS
        37
    HYSS  
       Jul 22, 2017
    @wyan453351466 你的网站好像不错呢 用的开源的?还是自己的?
    wyan453351466
        38
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @ericgui 代码暂时还没有开源!因为目前还是紧密结合在我自己的项目里。过段时间我会抽离出来单独封装成一个框架,分享给大家。还有也得写一份简易的文档。。
    wyan453351466
        39
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @HYSS 网站程序是自己写的,所以还有一些功能没做好。。现在正在开发呢。比如评论、通知之类的功能。。
    magensky
        40
    magensky  
       Jul 22, 2017 via iPhone
    其他栏目的热点信息是按照什么标准抓取的?
    wyan453351466
        41
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @tgxh 是会被封 ip 的。我这边也是通过控制爬取频率来解决这个问题的。。每 2 秒钟爬取一个页面。。速度超慢吧?不过还好一个小时可以爬 1000 多个页面了。
    wyan453351466
        42
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @magensky 按照内容在原网站被喜欢 /赞的数量来评分、爬取的
    xyx119
        43
    xyx119  
       Jul 22, 2017
    你这个网站看图太累了,手都给老子点麻了。。。
    linhaijian
        44
    linhaijian  
       Jul 22, 2017
    老司机求带,坐等开源
    wyan453351466
        45
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @xyx119 现在确实图片浏览体验不太好。。后期会增加图片浏览模式的
    run2
        46
    run2  
       Jul 22, 2017
    应该更深度一点,-。-
    机器学习打 tag ;
    去重复的;
    脸部识别什么的
    wyan453351466
        47
    wyan453351466  
    OP
       Jul 22, 2017 via iPhone
    @sobigfish 哈哈,是的。现在就没那么智能了,纯粹是根据不同的数据源,还有关键词匹配来打 tag 的
    eyp82
        49
    eyp82  
       Jul 23, 2017 via iPhone
    这这这。。。快拿我的补品来!
    bumz
        50
    bumz  
       Jul 23, 2017
    @wyan453351466 直接用微信屏蔽图片的方法就能快速图片去重——哈希
    bumz
        51
    bumz  
       Jul 23, 2017
    @sobigfish 脸部识别去重,别开玩笑了

    此外你给的是 face detection,不是 face recognition

    face detection 顶多就是把图片中的脸框起来,对去重有毛用?

    至于那些面部识别的先进的网络——你先给服务器整个 TitanX 去?
    wyan453351466
        52
    wyan453351466  
    OP
       Jul 23, 2017 via iPhone
    @bumz 不同图片大小(但实际图片相同)的也能识别吗?
    insoxin
        53
    insoxin  
       Jul 23, 2017 via Android
    @wyan453351466 源码分享吗🌚
    wyan453351466
        54
    wyan453351466  
    OP
       Jul 23, 2017 via iPhone
    @insoxin 过段时间会开源的
    cjjia
        55
    cjjia  
       Jul 23, 2017 via Android
    看“最新”栏目,看到一个裸男,简直辣眼睛!!!!
    bumz
        56
    bumz  
       Jul 23, 2017
    @wyan453351466 你要做图片内容去重,你就上 TitanX 显卡集群

    但是大多数重复发帖都是完全同样的图片,哈希足够了
    zjlin1984
        57
    zjlin1984  
       Jul 23, 2017
    路过,赞。
    coolypf
        58
    coolypf  
       Jul 23, 2017
    为什么都是 18+?
    wyan453351466
        59
    wyan453351466  
    OP
       Jul 23, 2017 via iPhone
    @coolypf 18+的意思是 18 岁以下禁止访问。。
    halicando
        60
    halicando  
       Jul 23, 2017
    豆瓣会不会封你的 ip ?
    wyan453351466
        61
    wyan453351466  
    OP
       Jul 23, 2017 via iPhone
    @halicando 爬取快的话会的。所以我控制了爬取频率
    caniuse
        62
    caniuse  
       Jul 23, 2017
    第 3 张可以
    run2
        63
    run2  
       Jul 23, 2017
    去重复的;
    脸部识别什么的
    @bumz 大哥看见分号了么?学过中文么? 因为他有些采集到是没有妹子的照片,是物品的这种情况
    loveqianool
        64
    loveqianool  
       Jul 23, 2017
    也可以爬一下某几个贴吧,比如萝莉吧
    wyan453351466
        65
    wyan453351466  
    OP
       Jul 23, 2017
    @loveqianool 嗯,以后可以关注下。。其他的高质量的妹子图多的网站。例如 lofter,还有知乎。。
    bumz
        66
    bumz  
       Jul 23, 2017
    @sobigfish 大哥学过中文吗?中文中有最后以分号结尾而不是句号结尾的吗???

    脸部识别?开玩笑,大多数妹子图都只有胸和屁股

    应该上鉴黄(😊)
    ericgui
        67
    ericgui  
       Jul 23, 2017
    @wyan453351466 好的, 等你开源 ,拜读一下
    huage
        68
    huage  
       Jul 23, 2017
    欢迎写一个探探和他趣的爬虫,各位坐稳了!
    ericgui
        69
    ericgui  
       Jul 23, 2017
    @wyan453351466 你的这个言说的站,是用 reddit 的开源的代码做的吧?感觉很熟悉的感觉
    wyan453351466
        70
    wyan453351466  
    OP
       Jul 23, 2017
    @ericgui 对,这个网站的确是模仿的 reddit 网站哈。但是源代码不是用的 reddit 开源的。。是自己写的。。
    qq1455018613
        71
    qq1455018613  
       Jul 23, 2017
    老司机
    xiahei
        72
    xiahei  
       Jul 23, 2017
    ericgui
        73
    ericgui  
       Jul 23, 2017
    @wyan453351466 挺牛逼
    SkyKoo
        74
    SkyKoo  
       Jul 23, 2017
    同样的图片应该可以用 MD5 判断下
    wyan453351466
        75
    wyan453351466  
    OP
       Jul 23, 2017 via iPhone
    @SkyKoo 嗯,回头试一下
    wyan453351466
        76
    wyan453351466  
    OP
       Jul 23, 2017 via iPhone
    @ericgui 谢谢!
    hancc
        77
    hancc  
       Jul 23, 2017
    哎,自从上了 V 站,身体一天不如一天。
    wyan453351466
        78
    wyan453351466  
    OP
       Jul 23, 2017 via iPhone
    @hancc 哈哈,这句话好眼熟。。
    foursking
        79
    foursking  
       Jul 23, 2017
    楼主 如果我直接爬你的站会介意吗?如果不介意,那就不客气了啊
    wyan453351466
        80
    wyan453351466  
    OP
       Jul 23, 2017 via iPhone
    @foursking 可以爬,就是希望控制一下爬取频率哈。。。爬太快我怕网站扛不住😂
    foursking
        81
    foursking  
       Jul 23, 2017
    @wyan453351466 放心放心
    siyiye
        82
    siyiye  
       Jul 23, 2017
    来个每月分期打包下载吧~~~
    dreamery
        83
    dreamery  
       Jul 23, 2017 via iPhone
    不错👍
    wyan453351466
        84
    wyan453351466  
    OP
       Jul 23, 2017 via iPhone
    @siyiye 后期可以考虑搞一个。。传到百度云盘。。
    pagict
        85
    pagict  
       Jul 24, 2017 via iPhone
    我发现豆瓣各个大尺度的小组已成为新手爬虫项目的基本源了 哈哈😂
    aksoft
        86
    aksoft  
       Jul 24, 2017
    还可以并发了?
    wyan453351466
        87
    wyan453351466  
    OP
       Jul 24, 2017
    @aksoft 可以啊。。
    wyan453351466
        88
    wyan453351466  
    OP
       Jul 24, 2017 via iPhone
    @dreamery 谢谢!
    wyan453351466
        89
    wyan453351466  
    OP
       Jul 29, 2017
    plpptp
        90
    plpptp  
       Aug 13, 2017 via Android
    404
    zonzin
        91
    zonzin  
       Aug 16, 2017
    说好的开源呢。等
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2908 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 130ms · UTC 12:30 · PVG 20:30 · LAX 05:30 · JFK 08:30
    ♥ Do have faith in what you're doing.