分享一个自己用 PHP 写的豆瓣妹子图爬虫,每日更新! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wyan453351466
V2EX    程序员

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

  •  1  
  •   wyan453351466 2017-07-22 16:44:44 +08:00 14152 次点击
    这是一个创建于 3071 天前的主题,其中的信息可能已经有所发展或是发生改变。

    访问地址:

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

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

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

    第 1 条附言    2017-07-23 20:19:05 +08:00
    看到大家对开源的呼声比较高。我会在之后的一段时间内抽时间整理下代码,然后把这个爬虫框架开源的。

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

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

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

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

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

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

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

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

    应该上鉴黄()
    ericgui
        67
    ericgui  
       2017-07-23 17:08:55 +08:00
    @wyan453351466 好的, 等你开源 ,拜读一下
    huage
        68
    huage  
       2017-07-23 17:17:44 +08:00
    欢迎写一个探探和他趣的爬虫,各位坐稳了!
    ericgui
        69
    ericgui  
       2017-07-23 17:21:08 +08:00
    @wyan453351466 你的这个言说的站,是用 reddit 的开源的代码做的吧?感觉很熟悉的感觉
    wyan453351466
        70
    wyan453351466  
    OP
       2017-07-23 17:22:37 +08:00
    @ericgui 对,这个网站的确是模仿的 reddit 网站哈。但是源代码不是用的 reddit 开源的。。是自己写的。。
    qq1455018613
        71
    qq1455018613  
       2017-07-23 17:23:21 +08:00
    老司机
    xiahei
        72
    xiahei  
       2017-07-23 17:28:42 +08:00
    ericgui
        73
    ericgui  
       2017-07-23 17:41:41 +08:00
    @wyan453351466 挺牛逼
    SkyKoo
        74
    SkyKoo  
       2017-07-23 17:44:09 +08:00
    同样的图片应该可以用 MD5 判断下
    wyan453351466
        75
    wyan453351466  
    OP
       2017-07-23 20:13:50 +08:00 via iPhone
    @SkyKoo 嗯,回头试一下
    wyan453351466
        76
    wyan453351466  
    OP
       2017-07-23 20:50:47 +08:00 via iPhone
    @ericgui 谢谢!
    hancc
        77
    hancc  
       2017-07-23 21:09:41 +08:00
    哎,自从上了 V 站,身体一天不如一天。
    wyan453351466
        78
    wyan453351466  
    OP
       2017-07-23 21:54:50 +08:00 via iPhone
    @hancc 哈哈,这句话好眼熟。。
    foursking
        79
    foursking  
       2017-07-23 22:01:25 +08:00
    楼主 如果我直接爬你的站会介意吗?如果不介意,那就不客气了啊
    wyan453351466
        80
    wyan453351466  
    OP
       2017-07-23 22:07:40 +08:00 via iPhone
    @foursking 可以爬,就是希望控制一下爬取频率哈。。。爬太快我怕网站扛不住
    foursking
        81
    foursking  
       2017-07-23 22:10:16 +08:00
    @wyan453351466 放心放心
    siyiye
        82
    siyiye  
       2017-07-23 22:17:04 +08:00
    来个每月分期打包下载吧~~~
    dreamery
        83
    dreamery  
       2017-07-23 22:20:35 +08:00 via iPhone
    不错
    wyan453351466
        84
    wyan453351466  
    OP
       2017-07-23 22:44:24 +08:00 via iPhone
    @siyiye 后期可以考虑搞一个。。传到百度云盘。。
    pagict
        85
    pagict  
       2017-07-24 08:07:07 +08:00 via iPhone
    我发现豆瓣各个大尺度的小组已成为新手爬虫项目的基本源了 哈哈
    aksoft
        86
    aksoft  
       2017-07-24 09:35:41 +08:00
    还可以并发了?
    wyan453351466
        87
    wyan453351466  
    OP
       2017-07-24 09:49:33 +08:00
    @aksoft 可以啊。。
    wyan453351466
        88
    wyan453351466  
    OP
       2017-07-24 11:40:38 +08:00 via iPhone
    @dreamery 谢谢!
    wyan453351466
        89
    wyan453351466  
    OP
       2017-07-29 15:16:03 +08:00
    plpptp
        90
    plpptp  
       2017-08-13 13:02:24 +08:00 via Android
    404
    zonzin
        91
    zonzin  
       2017-08-16 19:42:23 +08:00
    说好的开源呢。等
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5022 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 05:50 PVG 13:50 LAX 21:50 JFK 00:50
    Do have faith in what you're doing.
    ubao msn 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