今天看requests文档,想试试下载图片的功能。单一张图片,下载成功了,对于新手来说,已经很值得高兴了。后来一琢磨,既然咱学了正则,为啥不用requests和正则多抓几张图片试试?都说学代码要勤动手,那就练习练习试试吧。这是我第一个自己写的完整python代码,用最笨的办法,共计耗时3个小时,完成了我一个自创代码,新鲜刚出炉,通篇没有一个函数(因为不会用。。。。。)求群友给改写优化一下。谢谢
#-*- coding:utf-8 -*-
import requests
from contextlib import closing
import re
word=input('你想搜啥词?').strip()
ye=int(input('你想下载几页?'))
sites=[]
shu=0
offset=0
i=0
start = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+word+'&pn='+str(offset)+'&gsm=3c&ct=&ic=0&lm=-1&width=0&height=0'
if ye==1:
sites.append(start)
elif ye==0:
print('别闹')
elif ye>1:
while shu<ye:
sites.append('http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+word+'&pn='+str(offset)+'&gsm=3c&ct=&ic=0&lm=-1&width=0&height=0')
offset+=20
shu+=1
print(sites)
while len(sites)>0:
search_url=sites.pop()
headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
html=requests.get(search_url).text
pic_url=re.findall(r'objURL":"(.*?)"',html,re.S)
print(pic_url)
for surl in pic_url:
strings='bdpics\\'+str(i)+'.jpg'
try:
with closing(requests.get(surl,headers=headers,stream=True,timeout=20)) as ok:
with open(strings,'wb') as fd:
for chunk in ok.iter_content(128):
fd.write(chunk)
except:
print('这张图片链接失效')
continue
i+=1
代码
结果
狗
美女(?)