(2)查看search中的Headers,找到请求的URL和请求的payload,URL是请求的网址,payload是发送请求时的参数
(3)查看响应(请求发出后的返回的数据包),格式是字典格式也就是map,可以看到list中放的id
#conding=utf-8
import requests
import json
def download(img_url, img_name):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101'
}
req = requests.get(img_url, headers=headers)
path = r'F:\newimg'
file_name = path + '\\' + img_name+img_url[-13:]#图片名为描述+图片的编号
f = open(file_name, 'wb')
f.write(req.content)#以字节流的形式读入文件
f.close
def get_list(name, type):
url = 'https://www.veer.com/ajax/search' #URL
header = {
'content-type': 'application/json',
'Host': 'www.veer.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
payloadData = {
'graphicalStyle': type, #类型:1.照片 2.插画 3.矢量图 Nan为全部
'page': 1, #分页数量
'page_type': 6, #分页的格式,这个不重要
'perpage': 10000, #一页多少图片
'phrase': name #搜索的关键字
}# 分页数量为1,一页10000,是为了尽量只从一个页面上的到所有的list
html = requests.post(url, data=json.dumps(payloadData), proxies={"http" : "http:// 115.225.74.53: 8118"}, headers=header).text #payloadData要求用josn来进行解析,代理ip自己去爬取,
list = json.loads(html)#获取json解析的list,不然全是乱码
data = list['data'] #封装成字典格式
print("总共搜索到图片:",data['totalCount'], "张图片")
id = data['list']
for sid in id:
print(sid['oss400'], sid['cnTitle'])#用的是400的,为了veer的利益,不采用1600尺寸的图片
if sid['cnTitle']==None:#防止图片描述为空
sid['cnTitle'] = "none"
download(sid['oss400'], sid['cnTitle'])#进行下载
if __name__ == '__main__':
print("输入搜索图片名称:")
name = input()
print("选择图片类型1.照片 2.插画 3.矢量图 4.所有")
type = input()
if type>'3':
type=""
get_list(name, type)