花瓣是一个图片集合网站,也是设计师必备网站,不少设计师没有了花瓣的话,基本没有干活技能,哈哈,设计天下一大抄,其实花瓣的版权存在很大争议,不断被和谐,整改,就能够看出来,现在还有不少采集资源(图片)没有被公开。
正常爬取搜索入口内容是看不到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)