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

豆瓣 妹子 采集器,Python 处女座。。请各位指教

  •  4
     
  •   O21 ·
    ShenXuGongZi · 2014-07-14 23:45:57 +08:00 · 9507 次点击
    这是一个创建于 3581 天前的主题,其中的信息可能已经有所发展或是发生改变。
    源码请看: /t/122627

    Win 版本下载地址

    http://good.gd/3091379.htm

    我是win7 64位打包的。。不知道各位用会不会有什么BUG

    题外话:这个小组真心没什么节操啊!!!


    #
    本程序必须使用代理抓取,这样做虽然麻烦,但是可以躲过豆瓣禁你Ip
    支持自定义路径 测试环境win7 64位 没问题
    第 1 条附言  ·  2014-07-15 03:16:54 +08:00
    上面那个作废。
    最新版下载地址: http://162.244.92.122/DouBanMZ.zip

    话说我真折腾。。
    第 2 条附言  ·  2014-07-16 00:57:15 +08:00


    增加内容
    程序自动采集代理
    采集代理后随机选择
    然后自动下载图片保存

    现在只需要输入 需要采集的数量就可以了 下载链接还是

    http://162.244.92.122/DouBanMZ.zip

    @sunny1992
    @xiandao7997
    @loveminds
    @mengskysama
    @amon
    @Macrov
    @withrock
    @chenggiant
    40 条回复    2014-08-31 16:34:01 +08:00
    O21
        1
    O21  
    OP
       2014-07-14 23:57:26 +08:00
    sunny1992
        2
    sunny1992  
       2014-07-15 00:02:24 +08:00
    给力!
    xiandao7997
        3
    xiandao7997  
       2014-07-15 00:03:48 +08:00 via Android
    写个web的轮询…然后把图片保存下来…
    loveminds
        4
    loveminds  
       2014-07-15 01:52:38 +08:00
    这是做啥的
    O21
        5
    O21  
    OP
       2014-07-15 02:51:08 +08:00
    @loveminds Hello 女神~ 这是采集图片的。。 用下就知道啦。明天会改进现在的有点繁琐
    O21
        6
    O21  
    OP
       2014-07-15 03:29:31 +08:00
    来个演示

    loveminds
        7
    loveminds  
       2014-07-15 07:45:42 +08:00
    @O21 可以采集任何小组图片吧,另外所谓的代理是S5?127.0.0.1:1080 127.0.0.1:7070这样子?
    loveminds
        8
    loveminds  
       2014-07-15 07:46:32 +08:00
    mengskysama
        9
    mengskysama  
       2014-07-15 07:59:50 +08:00 via Android
    lz可以试试加一个代理类,然后抓去一个代理公布页面的所有代理,随机选取。
    loveminds
        10
    loveminds  
       2014-07-15 09:09:03 +08:00
    @mengskysama 127.0.0.1,代理服务端再切换不同的Shadowsocks
    O21
        11
    O21  
    OP
       2014-07-15 09:46:49 +08:00 via iPhone
    @mengskysama 嗯 这是我下一步要做的事情 😄
    O21
        12
    O21  
    OP
       2014-07-15 09:48:04 +08:00 via iPhone
    @loveminds http代理 我里面有说明哇 改下源码是可以采集任何小组的
    loveminds
        13
    loveminds  
       2014-07-15 10:05:25 +08:00
    @O21 那得配合还没发布的Shadowsocks-libYv了,里面有Socks2http功能
    O21
        14
    O21  
    OP
       2014-07-15 10:16:08 +08:00 via iPhone
    @loveminds 话说不用啊 直接找个http代理就行 你下载 http://162.244.92.122/DouBanMZ.zip 这个里面有说明啊
    loveminds
        15
    loveminds  
       2014-07-15 10:18:29 +08:00
    @O21 那些验证是件麻烦事,LibYv大概能提供99.997%的可靠性
    O21
        16
    O21  
    OP
       2014-07-15 10:23:43 +08:00 via iPhone
    @loveminds http透明代理啊 主要就是怕抓多了被豆瓣屏蔽
    amon
        17
    amon  
       2014-07-15 10:33:19 +08:00
    方便的话可以弄个web版的吧,v2exmac党居多,哈哈。
    O21
        18
    O21  
    OP
       2014-07-15 10:46:14 +08:00 via iPhone
    @amon Mac下 直接跑源码 木有问题的
    loveminds
        19
    loveminds  
       2014-07-15 12:09:14 +08:00
    @O21 搭建那个东西是件麻烦事,远没有搭建Shadowsocks好用
    Macrov
        20
    Macrov  
       2014-07-15 12:39:59 +08:00
    哎我这瞎眼,看成python处女采集器了。。。。
    withrock
        21
    withrock  
       2014-07-15 13:06:46 +08:00
    chenggiant
        22
    chenggiant  
       2014-07-15 15:02:08 +08:00
    @O21 嗯,刚用mac试了下。不过路径还是看了下源码才知道该怎么输...
    O21
        23
    O21  
    OP
       2014-07-16 00:54:51 +08:00
    @chenggiant :) 嘿嘿 现在已经更新啦。 自动采集代理 随机选取一个 进行采集
    O21
        24
    O21  
    OP
       2014-07-16 01:09:44 +08:00
    @Fotix
    @shyrock
    @sujin190
    @dingyaguang117
    @puyo
    @eslizn
    @WhyLiam
    @kawaiiushio
    @paulw54jrn
    @payne
    @deslife
    @sunjourney
    @cocalrush
    @vigoss
    @1130335361
    @qdsearoc
    @gelupk
    @zephyryu

    代码更新啦 嘿嘿

    增加内容
    程序自动采集代理
    采集代理后随机选择
    然后自动下载图片保存

    现在只需要输入 需要采集的数量就可以了 下载链接还是

    http://162.244.92.122/DouBanMZ.zip
    ChiangDi
        25
    ChiangDi  
       2014-07-16 01:11:16 +08:00 via Android
    刚去看了下那个小组,好奇怪的,为啥那么多人去晒
    reorx
        26
    reorx  
       2014-07-16 01:16:13 +08:00   ❤️ 1
    感谢楼主让我知道这个小组,认识了这个世界的广阔…
    O21
        27
    O21  
    OP
       2014-07-16 05:54:33 +08:00 via iPhone
    连夜把 获取任何小组 跟 模拟浏览器访问 美化程序 还有默认输入什么的写好了 睡起来在发下 Python 真好玩 可以俺不会写多线程 蛋痛
    paulw54jrn
        28
    paulw54jrn  
       2014-07-16 07:18:47 +08:00
    @O21
    一个主进程负责分析img url,把他们都放到Multiprocessing Queue里面,然后在多个worker thread之间共享,让worker负责具体的抓取. 不同的worker可以用不同的代理,防止屏蔽.
    hging
        29
    hging  
       2014-07-16 09:55:04 +08:00
    从前我一直不相信星座,直到公司招进来两个处女座。。。。。。。。

    我真不是来黑的。。。。别打我。。。。。
    zouyun5152
        30
    zouyun5152  
       2014-07-16 10:37:13 +08:00
    哈哈,牛逼
    shyrock
        31
    shyrock  
       2014-07-16 11:06:54 +08:00
    python新手表示好奇,38行和51行的x+=1和i+=1起什么作用?
    Pete
        32
    Pete  
       2014-07-16 12:33:58 +08:00
    感谢楼主 我发现了广阔的世界 不过这个小组发现你偷偷采集会怎么样..
    yangkuku
        33
    yangkuku  
       2014-07-16 12:41:04 +08:00
    谢谢楼主制造了这个牛逼的程序,但是我的32位win7不能使用,好遗憾的说
    O21
        34
    O21  
    OP
       2014-07-16 12:53:53 +08:00 via iPhone
    @hging 我本来想说 处女作 写错鸟
    O21
        35
    O21  
    OP
       2014-07-16 12:54:38 +08:00 via iPhone   ❤️ 1
    @yangkuku 我昨天编译32位了啊
    O21
        36
    O21  
    OP
       2014-07-16 16:18:15 +08:00
    http://cn-proxy.com/ 这网站被我弄得。。数据库连接超时了。。。不是我搞挂的吧。。。
    yangkuku
        37
    yangkuku  
       2014-07-16 17:53:11 +08:00
    弱弱的问一下 mac下怎么跑源码?
    Owenjia
        38
    Owenjia  
       2014-07-16 20:03:01 +08:00
    不是有这个一个网站的么~~http://www.dbmeizi.com/
    jptiancai
        39
    jptiancai  
       2014-08-19 15:12:40 +08:00
    @O21 看过下面这位仁兄的推荐也非常不错,支持开源!
    @Owenjia
    linKnowEasy
        40
    linKnowEasy  
       2014-08-31 16:34:01 +08:00
    #coding:utf-8
    import urllib.request
    import re
    import time
    import sys
    import os
    from imp import reload
    reload(sys)
    print ('#'*50)
    print ('This program is mainly collecting watercress <Do not be shy> group picture')
    print ('#'*50)
    print ('Collected before the need to enter a proxy server address, so we can prevent the douban shielding.')
    print ('Recommend a proxy address: http://cn-proxy.com/')
    print ('Only need to input the server address and port number, do not need to input HTTP')
    print ('Demo:127.0.0.1:8080')
    print ('#'*50)
    proxy_input = input('127.0.0.1:8087:')
    proxy_handler = urllib.request.ProxyHandler({'http':'%s'%proxy_input})
    opener = urllib.request.build_opener(proxy_handler)
    urllib.request.install_opener(opener)
    img_LuJ = input('input path:')
    img_LuJ2 = os.path.abspath(img_LuJ)
    print(img_LuJ2)
    def gethtml2(url2):
    req = urllib.request.Request(url2)
    html2 = urllib.request.urlopen(req).read()
    return html2

    def gettoimg(html2):
    reg2 = r'http://www.douban.com/group/topic/\d+'
    html2 = html2.decode('utf-8')
    toplist = re.findall(reg2,html2)
    x = 0
    for topicurl in toplist:
    x+=1
    return topicurl

    def download(topic_page):
    reg3 = r'http://img3.douban.com/view/group_topic/large/public/.+\.jpg'
    imglist = re.findall(b'reg3',topic_page)
    i = 1
    download_img = None
    for imgurl in imglist:
    img_numlist = re.findall(r'p\d{7}',imgurl)
    for img_num in img_numlist:
    download_img = urllib.request.urlretrieve(imgurl,img_LuJ2 + '/%s.jpg'%img_num)
    time.sleep(1)
    i+=1
    print (imgurl)
    return download_img

    page_end = int(input('Please enter the page number:'))
    num_end = page_end*25
    num = 0
    page_num = 1
    while num<=num_end:
    html2 = gethtml2('http://www.douban.com/group/haixiuzu/discussion?start=%d'%num)
    topicurl = gettoimg(html2)
    topic_page = gethtml2(topicurl)
    download_img=download(topic_page)
    num = page_num*25
    page_num+=1

    else:
    print('Program to collect complete')



    这个是我修改你的代码 python3下面跑成功但是没有获得图片 能不能帮忙看一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2253 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:04 · PVG 14:04 · LAX 23:04 · JFK 02:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.