花瓣是一个图片集合网站,也是设计师必备网站,不少设计师没有了花瓣的话,基本没有干活技能,哈哈,设计天下一大抄,其实花瓣的版权存在很大争议,不断被和谐,整改,就能够看出来,现在还有不少采集资源(图片)没有被公开。
正常爬取搜索入口内容是看不到json数据,需要通过浏览器抓包获取协议头,来伪造访问才能拿到json数据,不过关于协议头的字段需要多次测试才能正确获取到json数据。
这里我是直接使用了抓包的完整的协议头字段。
浏览器抓包入口,真实访问地址
访问入口参数,page页面参数修改就是这里
抓包协议头,完整的字段
关于花瓣图片的真实地址
比如:
https://hbimg.huabanimg.com/870827b6665a6e709023799bfea5df2c61a4cd74c509-6dM2ML_fw658/format/webp
真实的地址是去掉_fw658/format/webp,多余的字段,不少网站图片都有这样的设置
真实的图片地址:
https://hbimg.huabanimg.com/870827b6665a6e709023799bfea5df2c61a4cd74c509-6dM2ML
采集效果:
附源码:
#https://huaban.com/search/?q=纹理&category=industrial_design
#by 微信:huguo00289
# -*- coding: UTF-8 -*-
import requests,json,time
from fake_useragent import UserAgent
def ua():
ua=UserAgent()
headers={"User-Agent":ua.random,}
return headers
def get_pins():
img_urls=[]
headers={
'Accept': 'application/json',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Cookie': cookies,
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
'X-Request': 'JSON',
'X-Requested-With': 'XMLHttpRequest',
}
#cookies自行填写修改
for i in range(1,25):
url=f"https://huaban.com/search/?q=%E7%BA%B9%E7%90%86&category=industrial_design&k9v6qdc9&page={i}&per_page=20&wfl=1"
response = requests.get(url,headers=headers,timeout=6).content.decode('utf-8')
time.sleep(2)
response_dict=json.loads(response)
print(response_dict)
pins=response_dict['pins']
print(len(pins))
for pin in pins:
key=pin['file']['key']
key =f'https://hbimg.huabanimg.com/{key}'
img_urls.append(key)
print(len(img_urls))
return img_urls
def tp(img_urls):
i=1
for img_url in img_urls:
r = requests.get(img_url,headers=ua(),timeout=6)
time.sleep(1)
with open(f'{i}.jpg','wb')as f:
f.write(r.content)
print("下载图片成功")
i=i+1
if __name__ == '__main__':
img_urls=get_pins()
tp(img_urls)