V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
liuxu
V2EX  ›  Python

昨天晚上写了个 Python 程序,下载了一个福利网站 5000 来张妹子图片

  •  3
     
  •   liuxu ·
    liuquanhao · 2015-08-24 09:48:39 +08:00 · 16846 次点击
    这是一个创建于 3140 天前的主题,其中的信息可能已经有所发展或是发生改变。
    github:
    https://github.com/liuxu0315/download_nvshen_so

    执行:$ python nvshen_so.py

    用了多线程, 8 条线程,在 /tmp 下生成 nvshen_so/01 等文件夹并下载到相应的目录。
    里面有 2 行代码被注释掉了,它们是配套的,用来下载 2014/12/下的图片,有几百张。

    现在有个问题,我的程序无法一次全部下载完,总是漏一点,要么是执行一段时间后就卡死不动了不知道是什么原因。。
    当然下载图片前有判断是否有该文件,可以重复执行下载程序,不过这个治标没治本。。
    1  2  
    publicID001
        1
    publicID001  
       2015-08-24 10:01:40 +08:00   ❤️ 1
    import sqlite
    Aidea
        2
    Aidea  
       2015-08-24 10:13:22 +08:00
    煎蛋妹子吗
    vmebeh
        3
    vmebeh  
       2015-08-24 10:13:44 +08:00   ❤️ 1
    看看是卡在哪一步,一般是下载的时候卡了吧,设置超时,等超时了重试;复杂点就是 1L
    Tink
        4
    Tink  
       2015-08-24 10:28:46 +08:00   ❤️ 1
    也有可能是防爬虫导致的
    rming
        5
    rming  
       2015-08-24 10:30:55 +08:00
    额 fork 来学习下
    liuxu
        6
    liuxu  
    OP
       2015-08-24 10:36:42 +08:00
    @publicID001
    @vmebeh

    谢谢,我的 /tmp 是 ramdisk ,应该不是硬盘速度问题。。我看看是不是超时的原因
    liuxu
        7
    liuxu  
    OP
       2015-08-24 10:37:13 +08:00
    @Aidea nvshen.so ,女神吧。
    sangmong
        8
    sangmong  
       2015-08-24 10:38:19 +08:00
    我只想问一句:照片呢!!
    liuxu
        9
    liuxu  
    OP
       2015-08-24 10:39:06 +08:00
    @Tink 我多次执行脚本没问题,他们网站用 wordpress 搭建,图片命名还是 1.jpg,2.jpg 这样的,应该没有做防爬虫。
    liuxu
        10
    liuxu  
    OP
       2015-08-24 10:39:43 +08:00
    @sangmong 哈哈,自己用 python 跑
    loading
        11
    loading  
       2015-08-24 10:42:11 +08:00 via Android   ❤️ 1
    用 webzip 不就好了~配合 everything ,何必自己写。

    学习除外!
    a308057848
        12
    a308057848  
       2015-08-24 10:46:18 +08:00
    不要老是偷偷地下,我想说下次请带上我
    omph
        13
    omph  
       2015-08-24 10:49:14 +08:00
    好无聊啊,你要说写了个程序能把妹子 P 成 5000 种样子,那就惊世骇俗了
    ifishman
        14
    ifishman  
       2015-08-24 10:56:41 +08:00   ❤️ 2
    为什么不先扒图片链接,再根据队列多线程下载,这样不就能把链接分享给我了吗
    niushifan
        15
    niushifan  
       2015-08-24 11:00:32 +08:00
    还以为有照片呢
    liuxu
        16
    liuxu  
    OP
       2015-08-24 11:02:08 +08:00
    @loading
    @a308057848
    学习学习,哈哈
    liuxu
        17
    liuxu  
    OP
       2015-08-24 11:03:07 +08:00
    @omph 处理图片么,倒是用过 pythonmagick 转换过图片。。
    liuxu
        18
    liuxu  
    OP
       2015-08-24 11:03:30 +08:00
    @ifishman 好方法,周末有时间我再写一个
    liuxu
        19
    liuxu  
    OP
       2015-08-24 11:04:19 +08:00
    @niushifan 学习 python 用的,哈哈
    anthonylimhc
        20
    anthonylimhc  
       2015-08-24 11:09:34 +08:00
    WindowsError: [Error 3] The system cannot find the path specified: '/tmp/vnshen_so/'
    我在 win8 上跑,手动创建了 /tmp 文件夹就行了
    leavic
        21
    leavic  
       2015-08-24 11:35:13 +08:00
    这网站的图片 URL 对爬虫太友好了。。。。
    Ouyangan
        22
    Ouyangan  
       2015-08-24 11:36:42 +08:00
    正在看廖雪峰 python3 的教程呢? 看到 generator 那里晕着呢.
    dingyaguang117
        23
    dingyaguang117  
       2015-08-24 11:37:47 +08:00
    指定 timeout 是防卡死必须得呀
    ljbha007
        24
    ljbha007  
       2015-08-24 11:43:06 +08:00
    为啥你们都喜欢看妹子图片 不会越看越饥渴么
    yh7gdiaYW
        25
    yh7gdiaYW  
       2015-08-24 11:51:25 +08:00
    跑了一下,效果拔群
    tt88050643
        26
    tt88050643  
       2015-08-24 12:29:52 +08:00 via Android   ❤️ 1
    曾经设置 timeout 也不管用,然后写了个类似看门狗的线程来守护主线程,虽然方法很挫,但是成功下载到了十几万张图片。
    wizardoz
        27
    wizardoz  
       2015-08-24 12:50:54 +08:00   ❤️ 1
    少年你需要的是 scrapy
    liuxu
        28
    liuxu  
    OP
       2015-08-24 13:08:49 +08:00
    @anthonylimhc
    我的是 ubuntu,windows 上把程序的 basePath 改成 D:什么的也行
    liuxu
        29
    liuxu  
    OP
       2015-08-24 13:10:22 +08:00
    @wizardoz
    哈哈哈,它叫小刮刮啊,周末我拿了学习学习,感谢
    kepenj
        30
    kepenj  
       2015-08-24 13:43:08 +08:00
    艾玛~ 我以为是颜色网站呢~ 专门还偷偷下了源码去找...
    kenshinhu
        31
    kenshinhu  
       2015-08-24 14:03:21 +08:00
    为了这个,我要学 python
    leorc
        32
    leorc  
       2015-08-24 14:05:32 +08:00
    图呢。。。。
    Dongdong36
        33
    Dongdong36  
       2015-08-24 14:08:30 +08:00
    再贡献两个...咳咳
    https://github.com/sincerefly/Learning/blob/master/py/douban-meizi.py
    这个貌似是哪个 V 友写的,抓取豆瓣妹子的,当时刚接触 py 爬虫就收藏一下

    https://github.com/sincerefly/Learning/blob/master/py/getMeezin.py
    这个是抓取 meez.in 的,遍历 wordpress 文章 id 抓取,索性图片没多少,千张图片不到,直接遍历一遍就可以,哦,对了,这个站是我的,如果只是单纯的想收藏图片的也可以直接向我要就好了......==!
    xpol
        34
    xpol  
       2015-08-24 14:14:52 +08:00
    以前用 ruby 写过一个爬 tusi8 的。好像输出了一个 json 文件,保存已经爬过了的(包括网盘连接和密码)。有想要的不?
    Exin
        35
    Exin  
       2015-08-24 14:26:25 +08:00
    一直不会写超时,导致我的爬虫爬不好的图床时总是卡死……
    freaks
        36
    freaks  
       2015-08-24 14:33:11 +08:00
    @liuxu 为什么运行不起来呢?
    fjgwg
        37
    fjgwg  
       2015-08-24 14:42:45 +08:00   ❤️ 10
    楼主你妹的,为什么扒我的站 搞的网站卡的要死
    qq723985066
        38
    qq723985066  
       2015-08-24 14:48:28 +08:00
    @fjgwg 哎呀我擦……不会吧
    kknd22
        39
    kknd22  
       2015-08-24 14:50:39 +08:00   ❤️ 1
    容错太少
    失败尝试重试
    python 的 urllib 和 urllib2 模块检测错误能力都很强,但是下载经常出现图片不完整
    我虽不怎么懂 python ,代码也是抄的,但是找到了一个笨办法解决:
    足够的迭代重试,就可以解决下载图片不完整或者空的问题。
    fjgwg
        40
    fjgwg  
       2015-08-24 15:03:06 +08:00   ❤️ 1
    要扒你自己一个人扒,现在还把代码发出来 搞的大家都在扒
    zixianlei
        41
    zixianlei  
       2015-08-24 15:12:55 +08:00 via Android
    难道楼上就是站长?哈哈^ω^
    happywowwow
        42
    happywowwow  
       2015-08-24 15:16:52 +08:00
    站长 来了 哈哈哈
    wenbinwu
        43
    wenbinwu  
       2015-08-24 15:40:28 +08:00
    @freaks 你想在 python 里面运行另一个 python ?
    wenbinwu
        44
    wenbinwu  
       2015-08-24 15:41:05 +08:00
    哈哈哈,站长告诉你要 sleep
    chanssl
        45
    chanssl  
       2015-08-24 15:48:40 +08:00 via Android
    哈哈,笑翻了
    Kokororin
        46
    Kokororin  
       2015-08-24 15:55:22 +08:00
    好奇站长是怎么找过来的
    jonnn
        47
    jonnn  
       2015-08-24 16:06:37 +08:00
    站长找上门来了!
    malcolmyu
        48
    malcolmyu  
       2015-08-24 16:07:03 +08:00
    @fjgwg 爬的都访问不了了
    libotony
        49
    libotony  
       2015-08-24 16:13:20 +08:00
    @fjgwg 站长不哭,已经收藏你的站
    wuwuyun
        50
    wuwuyun  
       2015-08-24 16:14:45 +08:00
    hahahaha 站长哭晕在厕所
    idblife
        51
    idblife  
       2015-08-24 16:16:18 +08:00
    擦,我都是人肉爬虫的。。。

    http://qingbuyaohaixiu.com/
    flight2006
        52
    flight2006  
       2015-08-24 16:19:35 +08:00
    想起了我的 1024.py
    idblife
        53
    idblife  
       2015-08-24 16:25:03 +08:00
    @flight2006
    这位大哥口味够重
    话说那么多种图床,好抓吗?
    qinglangee
        54
    qinglangee  
       2015-08-24 16:25:29 +08:00
    把潜水的站长给逼了出来
    ybh37
        55
    ybh37  
       2015-08-24 16:30:10 +08:00
    硬生生的把站长逼出来了啊~
    Andy1999
        56
    Andy1999  
       2015-08-24 16:32:31 +08:00 via iPhone
    看到站长我笑了 哈哈哈哈
    axzy
        57
    axzy  
       2015-08-24 17:03:12 +08:00
    楼主可以把图片打包提供下载吗
    karlxu
        58
    karlxu  
       2015-08-24 17:04:32 +08:00 via iPhone
    @Dongdong36 请教下怎么加代理?
    thinkmore
        59
    thinkmore  
       2015-08-24 17:08:24 +08:00   ❤️ 1
    为啥不把链接先趴下来呢
    Dongdong36
        60
    Dongdong36  
       2015-08-24 17:12:41 +08:00   ❤️ 1
    flight2006
        61
    flight2006  
       2015-08-24 18:17:48 +08:00   ❤️ 1
    @idblife 我就抓自拍板块下的图,难度还可以吧,需要随机换浏览器头信息,不然会 403
    freaks
        62
    freaks  
       2015-08-24 18:25:06 +08:00
    @zhanzhang,sorry,I'm sorry , I'm python newbie, only a test
    jiehuangwei
        63
    jiehuangwei  
       2015-08-24 18:39:43 +08:00   ❤️ 1
    站长,你们可以一起喝个东西,讨论下合作的可能性
    liuxu
        64
    liuxu  
    OP
       2015-08-24 19:25:24 +08:00 via Android
    @fjgwg 站长哥你来了啊!其实我就是手抖了一下,把代码不小心抖出来了,然后抖上了 github ,又抖到了 V2EX ,真的。。你知道的,单身狗,手抖的厉害,控制不住。。
    liuxu
        65
    liuxu  
    OP
       2015-08-24 19:27:18 +08:00 via Android
    @fjgwg 哥的站我收藏了,给我机油分享,妥妥的
    wezzard
        66
    wezzard  
       2015-08-24 19:30:18 +08:00
    @fjgwg 站长不哭,站起来撸。(我也要扒……逃
    liuxu
        67
    liuxu  
    OP
       2015-08-24 19:31:34 +08:00 via Android
    @axzy 怕站长打我屁屁哈哈哈
    liuxu
        68
    liuxu  
    OP
       2015-08-24 19:32:52 +08:00 via Android
    @thinkmore 第一次写没经验,下一个程序我会注意的
    gulullu
        69
    gulullu  
       2015-08-24 19:49:00 +08:00
    @Dongdong36 求妹纸图片 = =
    lao454490095
        70
    lao454490095  
       2015-08-24 20:38:40 +08:00
    @omph hhh ,你这主意不错
    Dongdong36
        71
    Dongdong36  
       2015-08-24 21:19:07 +08:00
    ltxxgs
        72
    ltxxgs  
       2015-08-24 22:04:47 +08:00
    谁再写一个, ui.cn 的图片,其中 http://img.ui.cn/data/file 为固定地址,后面的地址取图片的后三位分别是文件夹“ 2 ”,文件夹“ 0 ”,文件夹“ 2 ”,最后是文件名称,有 jpg ,也有 png 。
    http://img.ui.cn/data/file/2/0/2/317202.png
    metas
        73
    metas  
       2015-08-24 22:19:51 +08:00
    @fjgwg 你为何如此叼,都找上门来了
    coderkiss
        74
    coderkiss  
       2015-08-24 22:34:41 +08:00
    @idblife 你的站点质量高 :D
    fjgwg
        75
    fjgwg  
       2015-08-24 22:42:07 +08:00
    得不到的拼命想得到,正当你得到时其实并没有想象中的那么好。


    一切都是浮云。。
    cbsw
        76
    cbsw  
       2015-08-24 22:45:05 +08:00
    你们这帮禽兽,我都还来不及看看网站里都有什么样的妹子,就被你们玩成 502 了
    ether
        77
    ether  
       2015-08-24 23:54:34 +08:00
    警察叔叔就是这个人!
    shenxian
        78
    shenxian  
       2015-08-25 00:19:11 +08:00
    233 站长好拼 笑死我了
    smallsix
        79
    smallsix  
       2015-08-25 08:02:45 +08:00
    @wizardoz 我擦,是你吗?
    smallsix
        80
    smallsix  
       2015-08-25 08:15:02 +08:00
    @ltxxgs 把地址改下就好了
    billwang
        81
    billwang  
       2015-08-25 08:47:49 +08:00
    站长还是打个包在 v2 上发个福利吧,不然大家还得分头跑,多浪费时间呀。哈哈
    hdbean
        82
    hdbean  
       2015-08-25 08:52:19 +08:00
    t6 的图的可以爬吗?
    wizardoz
        83
    wizardoz  
       2015-08-25 08:58:39 +08:00
    @smallsix 是谁?
    kknd22
        84
    kknd22  
       2015-08-25 09:10:31 +08:00
    其实我也不懂 python
    顺道求楼主,多线程教程
    falcon05
        85
    falcon05  
       2015-08-25 09:15:57 +08:00 via iPhone
    为了这个默默抄起荒废多年的 Python
    liuxu
        86
    liuxu  
    OP
       2015-08-25 09:18:17 +08:00
    liushuaikobe
        87
    liushuaikobe  
       2015-08-25 09:21:36 +08:00
    这种东西果断 gevent 啊!眨眼间就可以判断出来被扒的站有没有做放扒策略!
    liuxu
        88
    liuxu  
    OP
       2015-08-25 09:50:57 +08:00
    Alex77Lee
        89
    Alex77Lee  
       2015-08-25 09:55:50 +08:00
    我只是把被抓的网站拿走了。
    kknd22
        90
    kknd22  
       2015-08-25 12:53:22 +08:00
    @liuxu

    Re:88 楼
    windows 狗表示默默撸过
    Re:86 楼
    并非干这行业,之前想要多线程,无非是想爬这个站 http://www.nongji360.com/e-book/
    后来脚本也写好了,无奈发现重心反倒放到了写脚本上边
    也曾想过添加多线程,失败告终。
    发出当时写的脚本来,仅做参考,而且考虑再三,也不大想加多线程了,当初我自己爬,都把他服务器爬死好几天。。。
    https://github.com/kknd222/test
    代码不咋地,但是希望能给你点提示,需要两个包
    1 ) reportlab-3.0.win32-py2.7.exe
    2 ) PIL-1.1.7.win32-py2.7.exe
    brotherlegend
        91
    brotherlegend  
       2015-08-25 12:58:22 +08:00
    站长表示 很气愤,净浪费带宽。哈哈。
    smallsix
        92
    smallsix  
       2015-08-25 14:56:11 +08:00
    @wizardoz 你头像和我认识的一个朋友头像一样的,以为是同一个人呢
    Aresyz
        93
    Aresyz  
       2015-08-25 15:52:01 +08:00
    lz 和我去年神相似,当时边爬边写到文件夹, 5000+妹子图,用的 node ,来,握个爪!
    Ouyangan
        94
    Ouyangan  
       2015-08-25 16:37:23 +08:00

    66666
    shulen
        95
    shulen  
       2015-08-25 16:52:36 +08:00
    不开个网站,给大伙发个中秋福利啥的?
    liuxu
        96
    liuxu  
    OP
       2015-08-25 18:19:23 +08:00
    @Aresyz 握抓~
    aalska
        97
    aalska  
       2015-08-25 19:04:33 +08:00
    File "./nvshen_so.py", line 4
    <!DOCTYPE html>
    ^
    SyntaxError: invalid syntax

    是啥问题 对 python 完全陌生
    Ixizi
        98
    Ixizi  
       2015-08-25 19:26:10 +08:00
    哈哈哈哈~~~~ 求学习资料!!! 表示很感兴趣
    liuxu
        99
    liuxu  
    OP
       2015-08-25 20:25:02 +08:00 via Android
    @aalska 你做了什么,是不是改了代码
    liuxu
        100
    liuxu  
    OP
       2015-08-25 20:26:14 +08:00 via Android
    @Ixizi 欲望是最好的老师哈哈哈
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3020 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 11:03 · PVG 19:03 · LAX 04:03 · JFK 07:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.