import re
import requests
import time
word = input("Input key word: ") #input函数,其接受任意输入, 将所有输入默认为字符串处理,并返回字符串类型
#input函数,其接受任意输入, 将所有输入默认为字符串处理,并返回字符串类型
TotalNumber = int(input("How many picture do you want to download: ")) #定义一共需要下载的图片
url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word #+ '&ct=201326592&v=flip'
#result = requests.get(url)
# &pn=20 后缀为20表示向后一页,40表示向后两页
PageNumber=0 #定义向后翻页
i = 1 #定义循环变量
while PageNumber< TotalNumber: #while循环进行翻页
urll = url + '&pn='+str(PageNumber)
html = requests.get(urll).text # requests一个对象,读取text属性
pic_url = re.findall('"objURL":"(.*?)",', html, re.S)
# pic_url = re.findall('data-objurl="(.*?)"',html,re.S) #正则,找到
#print(pic_url)
for each in pic_url: #for循环进行查找图片并下载记录
print(each)
try:
pic = requests.get(each, timeout=10) #10s延迟,缓存图片
# 再次通过request.get获得图片对于网址的对象,通过content返回数据流,即为图片
except requests.exceptions.ConnectionError:
print('【错误】当前图片无法下载')
continue
if i<=TotalNumber: #判断是否下载了足够的图片
string = 'picture' + str(i) + '.jpg' #默认为当前程序所在文件夹,编号
file = open(string, 'wb')
# open函数,打开一个文件,并返回文件对象file,打开指定目录文件格式为f = open('D:/test.txt','r') r为属性
# “wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。
# 如果该文件不存在,创建新文件。一般用于非文本文件如图片等。”
file.write(pic.content) # file文件有很多属性,write将字符串写入文件,返回的为写入字符串长度
file.close()
i += 1
else:
print('\nCongratulations!The pictures have been downloaded') #打印,程序下载完成
time.sleep(300)
exit() #退出程序
PageNumber += 20 #百度图片的页面中,下一页之后,都是20结尾
python学习-爬虫-百度自动图片下载
最新推荐文章于 2021-10-24 16:32:34 发布