图片素材网采集

238 阅读2分钟

今天插一篇图片素材采集,之前更的一个花瓣网有人说webp格式转png格式是失败,大概是Imag包安装的版本不对,自行百度一下。整个转换的原理就是使用imag模块读取webp再保存为png。好,话不多说开始图片素材网采集

  1. 还是先分析一下网页结构,网站地址 进到首页,这次我这边检索的是摩托车,当然也可以换为其他的检索条件,不过这个图片检索还是不够成熟,有时间检索出来的图片不是输入的关键字

image.png 挑不到这个页面的话也可以直接拼链接地址zh-cn/search后面加上关键字 ok,还是先抓一下包看看

image.png 鼠标悬停到图片会出现下载按钮,然后抓一个图片包

image.png 图片的链接是这样的看起来这一溜数字就是图片id了,然后其他的照拼应该就可以了,多下载几张图片可以发现就是这个规律,然后再翻个页看看有没有这些id的接口出现

image.png 依然是进度条回滚代表翻页

image.png 看一下这里抓到的接口,这堆采集都很清清晰不再一一解释了,返回的数据也正是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)

image.png 然后取出来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)

image.png ok,没什么问题