学习浏览器开发者模式
查看百度图片中的图片搜索及下载
利用requests模块构造请求网址,并将图片下载到本地
下面展示一些 内联代码片
。
通过requests搜索出图片网址,批量下载
// An highlighted block
import requests
import time
from chardet import detect
import json
headers = {
'user-agent': '电脑的请求头'
}
def get_url(n):
url = 'https://m.baidu.com/sf/vsearch/image/search/wisesearchresult?' #这个网址好像是app端的图片搜索网址,刚开始学不太了解
urls = []
search_obj = input("请输入你要搜索的图片:")
for a in range(0,n,30): #我的这个网址的页面变化是30的倍数,所有range的函数中的step用的是30
data = {'tn': 'wisejsonala',
'ie': 'utf-8',
'fromsf': '1',
'word': search_obj,
'pn': a,
'rn': '30',
'prefresh': 'undefined',
'searchtype': '0',
'fromfilter': '0',
'tagname': '全部',
'subject_type': '6',
'entityname': search_obj,
'tpltype': '0'
}
res = requests.get(url=url,headers=headers,params=data)
coding_ = detect(res.content)['encoding']
print('*'*20)
print(coding_)
print('*'*20)
res.content.decode(coding_)
res.encoding = coding_
for i in range(30):
urls.append(res.json()['linkData'][i]['thumbnailUrl'])
time.sleep(5)
return urls
def get_image():
a = 0
for url in get_url(100):
res = requests.get(url=url,headers=headers)
a += 1
with open(f'C:\\picture\\{a}.png','wb') as f:
for chunk in res.iter_content(512): #这个是在requests文档中介绍的流下载,防止那内存过满,不懂哈哈
f.write(chunk)
print(url)
print(f'已下载{a}照片')
time.sleep(1)
if __name__ == '__main__':
get_image()