【爬虫】花瓣图片爬虫,Python图片采集下载源码
时间:2022-07-22
本文章向大家介绍【爬虫】花瓣图片爬虫,Python图片采集下载源码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
花瓣是一个图片集合网站,也是设计师必备网站,不少设计师没有了花瓣的话,基本没有干活技能,哈哈,设计天下一大抄,其实花瓣的版权存在很大争议,不断被和谐,整改,就能够看出来,现在还有不少采集资源(图片)没有被公开。
正常爬取搜索入口内容是看不到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)
- 零基础学编程023:用with实现优雅地释放资源
- Start transaction not working with Revit 2014
- 零基础学编程034:解决一个pandas问题
- ShellExecute 启动外部程序 参数详细介绍
- 零基础学编程033:字符串的split拆分与join连接
- 零基础学编程032:生成二维码
- C#,一些非常简单但应该知道的知识点
- C#神奇的扩展方法
- 使用Python制作一个简单的刷博器
- 零基础学编程031:Python与其它语言最不同的一条语法规则
- dedecms批量导出新增文章url和标题
- 明理知意:复合索引优化及索引访问原理
- WCF配置文件与文件下载之坎坷路
- 零基础学编程030:像黑客般玩玩字符艺术
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 图解:什么是哈希?
- 【Python基础】一文看懂 Pandas 中的透视表
- 彻底干掉恶心的 SQL 注入漏洞, 一网打尽!
- 某小型公司持续集成工具 Jenkins 实践
- 使用RBAC Impersonation简化Kubernetes资源访问控制
- 求求你别再用 MySQL offset 和 limit 分页了?
- 短视频带货源码,获取购物车中所有商品列表并加载显示
- 【Flutter 实战】菜单(Menu)功能
- 【Flutter 实战】路由堆栈详解
- 【Flutter 实战】全局监听路由堆栈变化
- 数据挖掘从入门到放弃:线性回归和逻辑回归
- 【Flutter 实战】文件系统目录
- 【原创】Spring Boot终极篇《上》
- 【原创】Spring Boot终极篇《下》
- 面试官:JDK、JRE、JVM 三者什么关系?