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 2
一楼的不满足条件.
是从 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 2016-02-22 17:25:10 +08:00 via Android
@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 |