Python批量下载百度图片

最近由于项目需求,要从百度上下载图片,但是网上的代码要么下载数量有限,要么就是骗人的,所以写了这篇文章,方便参考


先来张效果图


代码如下

# encoding=utf-8

importurllib, urllib2

importos

importre

path =r'http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=Q版人物&pn='

imgPath =r'img'

if notos.path.isdir(imgPath):

os.mkdir(imgPath)

index =1

t =1

whilet <60000:

url = path +str(t) +'&gsm=8c'

imgHtml = urllib2.urlopen(url).read().decode('utf-8')

urls = re.findall(r'"objURL":"(.*?)"', imgHtml)

forurlinurls:

t = t +1

print("下载:", url)

# 未能正确获得网页 就进行异常处理

try:

res = urllib2.urlopen(url)

ifstr(res.status) !='200':

print('未下载成功:', url)

continue

exceptExceptionase:

print('未下载成功:', url)

filename = os.path.join(imgPath,str(index) +'.jpg')

withopen(filename,'wb')asf:

f.write(res.read())

print('下载完成\n')

index +=1

print("下载结束,一共下载了 %s 张图片"% (index -1))


说明:

1.path里面代表下载地址。我的关键词是  Q版人物  ,你可以直接替换这个关键词

2.imgPath 代表当前的保存路径。我把文件保存在当前文件夹下面的 ‘img’文件夹中

3.while t < 60000 代表下载的图片的总数。因为百度每次下载的数量也就30几张,所以需要用循环拉取

4.我的代码是直接从pycharm复制过来的,所以不知道简书上面的格式会不会错乱,如果错乱的话对照下面的截图进行修改

5.下载速度有点慢,考虑怎么用多线程下载,等研究明白了会上传新的代码


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容