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

煎蛋妹子图爬图工具

  •  
  •   cxshun ·
    cxshun · 2013-08-28 10:23:01 +08:00 · 12676 次点击
    这是一个创建于 4130 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前有朋友推荐了煎蛋这个网站的妹子图,想到肯定有一大堆同志在邪恶这些图片的,于是就有想法想写一个爬图片的工具。
    拖延症有点伤不起,这段时间一直没什么心思,回去都在玩游戏,只能在上班时间,抽点时间搞定了。
    代码放在github里面。注释都还蛮清楚的,不多说,同志们自己看代码。执行一下就会爬了,注意,爬图的时间适合调整一下,小心被屏蔽IP哦。同志们也要保重身体啊。哈哈!
    github代码地址:
    https://github.com/cxshun/jiandan-xxoo-crawler

    请注意:代码用python搞定,要使用lxml第三方组件。同志们有bug要记得反馈啊,哈哈。
    第 1 条附言  ·  2013-08-28 11:41:35 +08:00
    经XD提醒,请注意:代码中使用的python3。另外,有兄弟说煎蛋最近的服务器压力蛮大的,所以请不要长时间运行。
    代码中有进行历史记录,所以中断不会有什么影响,下次会再进行另外的爬取。
    26 条回复    2015-02-17 14:15:43 +08:00
    blahnice
        1
    blahnice  
       2013-08-28 10:55:14 +08:00   ❤️ 1
    py3,oh holy christ
    gangsta
        2
    gangsta  
       2013-08-28 11:00:27 +08:00
    +1

    以前见过Java版的
    cxshun
        3
    cxshun  
    OP
       2013-08-28 11:06:05 +08:00
    @blahnice py3咋了?是很多组件还不支持还是很不爽它?以前用py2,但最近慢慢过度到py3了。感觉py3还是比py2好多了,py2的编码问题搞的头都大了。
    blahnice
        4
    blahnice  
       2013-08-28 11:20:25 +08:00   ❤️ 1
    @cxshun 只是建议需要在帖子中说明下,毕竟现在外界默认使用的还是非py3.
    py3一个大版本不兼容,很多库没跟上直接导致没有使用的欲望。
    justfindu
        5
    justfindu  
       2013-08-28 11:27:43 +08:00
    别啊~ 煎蛋最近总是崩溃~ 这样会增加很大压力啊亲 - -
    greatghoul
        6
    greatghoul  
       2013-08-28 11:31:10 +08:00
    煎蛋妹子图不错呀,赶紧去访问下。
    cxshun
        7
    cxshun  
    OP
       2013-08-28 11:44:00 +08:00
    @blahnice 确实,我加上了提醒。

    @justfindu 哈哈,只是发出来而已。我加上了说明。其实只是访问网页而已,煎蛋的图源貌似都在渣浪,所以这个应该问题不大。把访问网页的时间设长一点,应该就OK了。但爬图片毕竟不是正事,不能搞太久。

    @greatghoul 哈哈,确实啊。但XD要注意身体啊。
    @gangsta JAVA版本的实现起来麻烦很多,虽然库大把,还是python好啊。人生苦短啊。
    Hysteria
        8
    Hysteria  
       2013-08-28 12:25:52 +08:00
    煎蛋网果真不错,刚好好浏览了一番。
    fengdragon
        9
    fengdragon  
       2013-08-28 12:41:47 +08:00
    python2.6下的,使用库urllib,re

    https://gist.github.com/fengdragon/6362155

    在网页上抓出来的每张图都几十K是正常的么?还是有高清的。。。
    直接用urlretrieve下的,刚开始学python,也没并行,一页页的拖下来的 ==

    26行的time.sleep是因为urlretrieve先建空白再填图,网速顿的话图的下沿有黑边。
    自己看网速改吧就
    cxshun
        10
    cxshun  
    OP
       2013-08-28 14:27:59 +08:00
    @fengdragon 不错,实际上处理起来倒不麻烦。但这样会把头像啥的都会取下来吧。另外,没有保存队列啥东西的。如果中途断了就比较杯具了。话说代码中为啥要限定页数呢,1-911,看来XD很久之前写的哦,不错啊。
    @Hysteria 哈哈,必须不错啊。但不可看太多,伤身也。
    fengdragon
        11
    fengdragon  
       2013-08-28 15:05:40 +08:00
    @cxshun 取图没问题,头像不会爬,正则匹配过而且也加了超时判定,
    只是代码太丑了还那么多sleep,我都不好意思看的再 = =

    嗯,断了确实就悲剧了。我这网速比较稳定就没加处理(其实是不会。。
    加页数限制也是因为还不会抓最大页数。。。。汗。。
    cxshun
        12
    cxshun  
    OP
       2013-08-28 15:19:55 +08:00
    @fengdragon 代码不错啊。其实我比你多的东西就是多了一个保存队列,也多了一堆配置和恢复的东西而已。反正原理就那样。爬图本来就没多少含量,当练练手罢了。
    Loerise
        13
    Loerise  
       2013-08-28 16:54:39 +08:00
    等待微博爬相册工具~
    volCANo
        14
    volCANo  
       2013-08-28 19:30:18 +08:00
    微信摇一摇抓图不就好了嘛
    Alexisused
        15
    Alexisused  
       2013-08-31 12:43:42 +08:00
    哈哈 你果然搞出来了啊~
    aisk
        16
    aisk  
       2013-08-31 12:46:26 +08:00
    sophy
        17
    sophy  
       2013-08-31 14:38:39 +08:00
    @aisk 感谢默默送上
    jason52
        18
    jason52  
       2013-08-31 21:48:57 +08:00
    我这个短~~用了pyquery

    http://dpaste.com/1361816/
    SharkIng
        19
    SharkIng  
       2013-08-31 21:56:20 +08:00
    py3的确比较失败,库比较脱节所以很少人用,用的话也很不好找到支持的平台
    jason52
        20
    jason52  
       2013-08-31 21:56:43 +08:00
    from pyquery import PyQuery as pq
    import time


    fp=open("meizhitu.txt",'w')
    for i in range(800,990):
    url = 'http://jandan.net/ooxx/page-' + str(i)


    d1 = pq(url)

    posts = []

    for anchor in d1('#comments p>img'):
    anchor = d1(anchor)
    ans = anchor.attr('src')
    posts.append(ans)
    print >>fp,ans
    print i
    #if (i%10 == 0):
    #time.sleep(5)
    fp.close
    xavierskip
        21
    xavierskip  
       2013-08-31 23:16:09 +08:00
    我写过一个抓取虎扑相册的。恩,最黄的篮球网站。。。
    yipianfengyeqing
        22
    yipianfengyeqing  
       2013-09-01 02:22:26 +08:00
    宅男福利
    cxshun
        23
    cxshun  
    OP
       2013-09-01 18:41:23 +08:00
    @aisk 哈哈,这个就简单啦,比煎蛋简单多了,等其他有空的XD弄一个。
    @xavierskip 哈哈,中国的特色,必须的。
    @jason52 这个牛叉。
    @SharkIng 确实,变化太大,库的开发者也比较痛苦,也只能怪python自己不争气,说改就改。
    tedd
        24
    tedd  
       2014-05-14 11:28:07 +08:00
    @cxshun 煎蛋的图不是都链接的是weibo的吗?爬煎蛋图其实也就就是抓到每页的html,实际下载图片都是weibo来的(weibo流量),请问这样会对煎蛋服务器造成压力吗?
    Ljungqvist
        25
    Ljungqvist  
       2015-02-17 11:20:19 +08:00
    执行 img_links = re.findall("http.*jpg",html_content)后提示错误:
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 95: ordinal not in range(128)
    cxshun
        26
    cxshun  
    OP
       2015-02-17 14:15:43 +08:00
    @tedd 照理应该不会,但还是调低点频率的好,毕竟煎蛋免费的,估计也哆呛的。
    @Ljungqvist 印象中貌似没有这样的代码,看样子应该是编码的问题,在文件头部指定下#encoding:utf-8试试。如果再不行,那就可能是网页编码的问题,在网上找找,应该会有对应的文章的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1361 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:27 · PVG 01:27 · LAX 09:27 · JFK 12:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.