今天插一篇图片素材采集,之前更的一个花瓣网有人说webp格式转png格式是失败,大概是Imag包安装的版本不对,自行百度一下。整个转换的原理就是使用imag模块读取webp再保存为png。好,话不多说开始图片素材网采集
- 还是先分析一下网页结构,网站地址 进到首页,这次我这边检索的是摩托车,当然也可以换为其他的检索条件,不过这个图片检索还是不够成熟,有时间检索出来的图片不是输入的关键字
挑不到这个页面的话也可以直接拼链接地址zh-cn/search后面加上关键字
ok,还是先抓一下包看看
鼠标悬停到图片会出现下载按钮,然后抓一个图片包
图片的链接是这样的看起来这一溜数字就是图片id了,然后其他的照拼应该就可以了,多下载几张图片可以发现就是这个规律,然后再翻个页看看有没有这些id的接口出现
依然是进度条回滚代表翻页
看一下这里抓到的接口,这堆采集都很清清晰不再一一解释了,返回的数据也正是id,这就明了了
2. 先请求列表页获取id
headers = {
'authority': 'www.pexels.com',
'accept': '*/*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
'content-type': 'application/json',
'pragma': 'no-cache',
'referer': 'https://www.pexels.com/zh-cn/search/%E6%91%A9%E6%89%98%E8%BB%8A/',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'secret-key': 'H2jk9uKnhRmL6WPwh89zBezWvr',
'sentry-trace': '7d09bf07745242839070c2be61fa9bbb-8622e1e7b6af340c-0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
'x-client-type': 'react',
}
params = {
'page': '4',
'per_page': '24',
'query': '摩托車',
'orientation': 'all',
'size': 'all',
'color': 'all',
'seo_tags': 'true',
}
response = requests.get('https://www.pexels.com/zh-cn/api/v3/search/photos', params=params, headers=headers).json()['data']
for res in response:
print(res)
然后取出来id和图片链接
id = res['id']
url = res['attributes']['image']['download_link']
headers = {
'authority': 'images.pexels.com',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
'cookie': 'ab.storage.deviceId.5791d6db-4410-4ace-8814-12c903a548ba=%7B%22g%22%3A%2220a58d06-9761-0ece-be82-421223ee7614%22%2C%22c%22%3A1682300813893%2C%22l%22%3A1682300813893%7D; OptanonAlertBoxClosed=2023-04-24T01:57:27.541Z; OptanonConsent=isGpcEnabled=0&datestamp=Mon+Apr+24+2023+09%3A57%3A27+GMT%2B0800+(%E4%B8%AD%E5%9B%BD%E6%A0%87%E5%87%86%E6%97%B6%E9%97%B4)&version=202301.1.0&isIABGlobal=false&hosts=&landingPath=NotLandingPage&groups=C0001%3A1%2CC0002%3A1%2CC0003%3A1&AwaitingReconsent=false; __cf_bm=CUZJVgKt2txeN_8kqf3DoZou8_rZhlJBbJAoqLeWSc8-1682303050-0-AWjpoB8prtZL6p3LHMhFsYPWuVTTiwl7DeBHP0MhY8qwjvhIcsOSouC7tHagbcXIACeD07FogHCO1tBN0CXK2Nk=; ab.storage.sessionId.5791d6db-4410-4ace-8814-12c903a548ba=%7B%22g%22%3A%22219876d0-95e4-43e5-7364-df39d0ef8719%22%2C%22e%22%3A1682304854325%2C%22c%22%3A1682300813891%2C%22l%22%3A1682303054325%7D',
'pragma': 'no-cache',
'referer': 'https://www.pexels.com/',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'same-site',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
}
print(url)
img = requests.get(
url,
headers=headers,
)
with open(f'{id}.jpg','wb')as f:
f.write(img.content)
ok,没什么问题