![]() | 1 leeyiw 2016-02-22 15:05:42 +08:00 shell: `for i in {0..9999}; do wget www.xxx.com/$i.jpg; done` |
![]() | 2 supersf 2016-02-22 15:06:26 +08:00 有地址了直接下载不就好了。 |
![]() | 3 donghouhe 2016-02-22 15:11:58 +08:00 via iPad 关键在于什么?在于产生 0001-9999 , for num in xrange(1, 10000) str(num).zfill(4) |
![]() | 4 yougg 2016-02-22 15:14:34 +08:00 ![]() 一楼的不满足条件. 是从 0001 到 9999 不是从 1 到 9999 应该这样: for i in {10001..19999}; do wget www.xxx.com/${i:1}.jpg; done |
![]() | 6 yougg 2016-02-22 15:20:29 +08:00 @skydiver 你的 shell 是什么版本可以直接遍历{0001..9999}直接生成 0001, 0002, 0003, 0004 ...... 9999 这样的带前缀的序列码? 我的 bash 不行 |
![]() | 8 skydiver 2016-02-22 15:24:13 +08:00 @yougg 试了两个版本的都可以啊,我也一直这么用的 GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu) GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu) 难道旧版的不行么? |
9 Laobai 2016-02-22 15:24:25 +08:00 我不小心点了下 URL ,好污 |
10 vincenttone 2016-02-22 15:26:16 +08:00 for i in {1..10}; do echo www.xxx.com/`printf %04d $i`.jpg;done |
![]() | 11 yangxiongwei 2016-02-22 15:26:20 +08:00 |
12 vincenttone 2016-02-22 15:26:52 +08:00 @vincenttone 应该是 for i in {1..9999}; do wget www.xxx.com/`printf %04d $i`.jpg;done |
![]() | 13 yougg 2016-02-22 15:27:55 +08:00 @skydiver 看来是新版本特性, 我这里生产环境版本都很老. # bash --version GNU bash, version 3.2.51(1)-release (x86_64-suse-linux-gnu) Copyright (C) 2007 Free Software Foundation, Inc $ bash --version GNU bash, version 3.1.23(1)-release (i686-pc-msys) Copyright (C) 2005 Free Software Foundation, Inc. |
![]() | 16 tSQghkfhTtQt9mtd 2016-02-22 16:53:25 +08:00 @Laobai 我去瞎了 |
17 DIYgod 2016-02-22 16:55:10 +08:00 @liwanglin12 我举报楼主涉嫌传播色情网站 |
![]() | 18 rock_cloud 2016-02-22 16:58:50 +08:00 seq -w 1 1000 @donghouhe |
19 raighne OP |
20 em70 2016-02-22 17:21:24 +08:00 via iPhone 不用写程序,迅雷和快车都直接这种地址批量下载,设置规则即可 |
![]() | 21 ChefIsAwesome 2016-02-22 17:23:34 +08:00 我不是搞 python 的,不了解 python 爬虫的机制,只是看到这帖子好奇,顺便问下:上万个图片下载,一个下完接下一个么?会不会太慢,中间出错了怎么办 |
![]() | 22 YUX PRO @ChefIsAwesome 错了 pass |
![]() | 23 DaCong 2016-02-22 17:38:28 +08:00 强烈建议各位在发帖的时候不要再使用 xxx.com 作为域名的示范,实在不行用 google.com 虚构一个也好啊 |
![]() | 25 zhjits 2016-02-22 20:58:40 +08:00 @DaCong URL 里面的 host 标准示例: example.com (可戳) |
![]() | 26 lhbc 2016-02-22 21:30:07 +08:00 curl -O "http://www.xxx.com/[0001-9999].jpg" |
27 Frapples 2016-02-22 21:56:06 +08:00 @ChefIsAwesome 可以使用多线程下载,比如开五个线程同时下载五张图片,带宽足够就能加速 5 倍。当然实际考虑的情况还有其它的因素。 |
![]() | 28 mianju 2016-02-22 22:41:41 +08:00 要不开十个线程,每个线程下 1000 个图片? |
![]() | 29 SlipStupig 2016-02-22 22:49:10 +08:00 import urllib2, os downloader = lambda number:[(open(str(k), 'wb').write(urllib2.urlopen('http://baidu.com/%s' % i).read())) for i in xrange(number) for k in xrange(number)] print downloader(999) |
![]() | 30 raysonx 2016-02-22 22:58:54 +08:00 |
![]() | 31 MyFaith 2016-02-22 23:15:46 +08:00 楼主问的是 Python ,为什么回复都是 shell ?改变了问题的本意 |
32 macroideal 2016-02-22 23:47:38 +08:00 讯雷都这个功能. |
![]() | 33 imlinhanchao 2016-02-23 00:20:22 +08:00 @MyFaith 同问。 |
![]() | 34 toono 2016-02-23 03:04:02 +08:00 有地址的话,迅雷的批量下载可以根据表达式下载 XD |
![]() | 35 Liang 2016-02-23 08:36:01 +08:00 迅雷下载啊,哥哥 |
![]() | 37 billion 2016-02-23 09:01:13 +08:00 import requests cOntent= requests.get('http://xxx.com/1.jpg').content with open('1.jpg', 'wb') as f: f.write(content) |
![]() | 38 laobaozi 2016-02-23 09:10:10 +08:00 我点开了链接....... 楼主是想干什么 |
39 latteczy 2016-02-23 09:39:12 +08:00 我记得有个 retrive 方法,可能拼写不对 |
![]() | 40 firemiles 2016-02-23 10:44:24 +08:00 curl http://example.com/pic[0001-9999].jpg |
![]() | 42 SlipStupig 2016-02-23 12:35:51 +08:00 @latteczy import urllib downloader = lambda number:[urllib.urlretrieve('http://baidu.com/%s' % i, '%s.jpg' % i) for i in xrange(number)] downloader(1) |
![]() | 43 MyFaith 2016-02-23 16:12:45 +08:00 @dant 确实不需要用 Python ,但是楼主的问题就是关于 Python 的,也许人家是在学习,你们这样改了问题的本意,对楼主本人帮助不大,他问的问题不是:有什么好的方法 而是: Python 怎么做到。 |
![]() | 44 jinxihexi 2016-02-23 18:25:12 +08:00 楼主,你的问题感觉有点难呢。推荐一个程序员专用看干货,找大牛,勾搭妹纸的必备 APP 神器,叫同行说,上面很多干货和同行经验交流哦! |
45 administrator321 2016-02-23 18:25:25 +08:00 @donghouhe 这个就可以 |
![]() | 46 suixn 2016-02-23 18:29:42 +08:00 #!/usr/bin/env python # coding=utf-8 import urllib import time import urllib.request import os def getPhoto(num): respOnse= urllib.request.urlopen('http://example.com/getuserphoto.jsp?userid=20135%s'%num) thePage = response.read() f = open(('./photo1/%s.jpg'%(num)),'wb') f.write(thePage) f.close() stunum = 1 while(stunum <= 9999): if stunum < 10: stu_num = '000%d'%(stunum) elif stunum < 100: stu_num = '00%d'%(stunum) elif stunum < 1000: stu_num = '0%d'%(stunum) else: stu_num = stunum getPhoto(stu_num) #time.sleep(1) stunum = stunum + 1 |