位置: 编程技术 - 正文

Python中Scrapy爬虫图片处理详解(scrapy爬虫教程)

编辑:rootadmin

推荐整理分享Python中Scrapy爬虫图片处理详解(scrapy爬虫教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:scrapy爬虫流程,scrapy网络爬虫实战,scrapy爬虫总结,scrapy网络爬虫实战,scrapy爬虫实例,python中scrapy爬虫框架,scrapy网络爬虫实战,python中scrapy爬虫框架,内容如对您有帮助,希望把文章链接给更多的朋友!

下载图片

下载图片有两种方式,一种是通过 Requests 模块发送 get 请求下载,另一种是使用 Scrapy 的 ImagesPipeline 图片管道类,这里主要讲后者。

安装 Scrapy 时并没有安装图像处理依赖包 Pillow,需手动安装否则运行爬虫出错。

首先在 settings.py 中设置图片的存储路径:

IMAGES_STORE = 'D:/'

图片处理相关的选项还有:

之前已经存在提取内容的 TuchongPipeline 类,如果使用 ImagePipeline 可以将提取内容的操作都合并过来,但是为了更好的说明图片管道的作用,我们再单独创建一个 ImagePipeline 类,加到 pipelines.py 文件中,同时重载函数 get_media_requests:

上篇文章中我们把图片的URL保存在了 item['images'] 中,它是一个字典类型的数组,形如:[{img_id: img_url}, ...],此函数中需要把 img_url 取出并构建为 scrapy.Request 请求对象并返回,每一个请求都将触发一次下载图片的操作。

Python中Scrapy爬虫图片处理详解(scrapy爬虫教程)

到 settings.py 中注册 PhotoPipeline,并把优先级设的比提取内容的管道要高一些,保证图片下载优先于内容处理,目的是如果有图片下载未成功,通过触发 DropItem 异常可以中断这一个 Item 的处理,防止不完整的数据进入下一管道:

执行爬虫 scrapy crawl photo ,如无错误,在设定的存储目录中会出现一个 full 目录,里面是下载后的图片。

文件名处理

下载的文件名是以图片URL通过 sha1 编码得到的字符,类似 0acaacdc4fade7bcfa.jpg 不是太友好,可以通过重载 file_path 函数自定义文件名,比如可以这样保留原文件名:

上面这样处理难免会有重名的文件被覆盖,但参数 request 中没有过多的信息,不便于对图片分类,因此可以改为重载 item_completed 函数,在下载完成后对图片进行分类操作。

函数 item_completed 的定义:

参数中包含 item ,有我们抓取的所有信息,参数 results 为下载图片的结果数组,包含下载后的路径以及是否成功下载,内容如下:

重载该函数将下载图片转移到分类目录中,同时关联文件路径到 item 中,保持内容与图片为一个整体:

接下来在原 TuchongPipeline 类中写入数据库的操作中,通过 item['image_paths'] 路径信息写入本地图片链接。

除了 ImagesPipeline 处理图片外,还有 FilesPipeline 可以处理文件,使用方法与图片类似,事实上 ImagesPipeline 是 FilesPipeline 的子类,因为图片也是文件的一种。

Python科学画图代码分享 Python画图主要用到matplotlib这个库。Matplotlib是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。这里有一本电

Python编程使用tkinter模块实现计算器软件完整代码示例 Python提供了多个图形开发界面的库。Tkinter就是其中之一。Tkinter模块(Tk接口)是Python的标准TkGUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样

Python爬虫实现爬取京东手机页面的图片(实例代码) 实例如下所示:__author__='FredZhao'importrequestsfrombs4importBeautifulSoupimportosfromurllib.requestimporturlretrieveclassPicture():def__init__(self):self.headers={'User-Agent':'Mozilla/5.0(Ma

标签: scrapy爬虫教程

本文链接地址:https://www.jiuchutong.com/biancheng/375472.html 转载请保留说明!

上一篇:Python使用django框架实现多人在线匿名聊天的小程序(django在pycharm)

下一篇:Python科学画图代码分享(python科学绘图)

  • 买车交的保险
  • 什么叫应纳税所得额
  • 海关缴款通知书在哪里查询
  • 分红免征企业所得税
  • 增值税纳税申报表在哪里打印
  • 金蝶固定资产折旧怎么修改
  • 地下建筑房产税减免优惠政策
  • 有发票章的存根联可以当发票用吗
  • 哪些发票可以冲红票
  • 材料成本差异月初贷方余额表示什么
  • 营改增医院增值税
  • 个人账户转公司账户需要交税吗
  • 购买印花税票怎么抵扣
  • 公司收内部职工停车费如何确认收入?
  • 小微企业劳务费税率
  • 企业多扣个税怎么处理
  • 公司冲账发票做账流程
  • 子公司和母公司可以一起投标吗
  • 预缴企业所得税是含税还是不含税
  • 合同资产和工程存货的区别
  • win11 应用商店
  • 固定资产折旧计提时间
  • Mac OS X Mavericks的Finder打开不同标签的操作步骤
  • php imagecreatetruecolor 创建高清和透明图片代码小结
  • 特许权使用费属于销售收入吗
  • win7指定程序用指定网卡
  • Kamikōchi, Nagano Prefecture, Japan (© sadao/Shutterstock)
  • 建筑业异地施工可以先开发票么
  • 超级本轻薄本
  • 个人独资企业是小规模纳税人吗
  • wordpresscom
  • php实现递归
  • 数据挖掘期末考试大纲
  • 深度学习数据集—水果数据集大合集
  • 天然气零售企业
  • 权益法转成本法其他综合收益需要结转吗
  • 个税专项附加扣除金额
  • 应交税费为负数在资产负债表里怎么填
  • 加计扣除进项税额是什么意思
  • 资产负债表日后事项是指资产负债表日之后至审计报告
  • T-SQL语句修改数据表属性
  • 发放职工薪酬计入什么科目
  • 无票收入的增值税税率
  • 母公司溢价收购子公司
  • 政府补助都有哪些类型
  • 材料采购的流程
  • 航天信息税票
  • 挂靠被查出来后挂靠费怎么处理?
  • 技术研发费用是什么意思
  • 银行汇票质押办理流程
  • 金税卡就是税控盘吗
  • 广告公司个体户税率
  • 房地产企业销售商品房增值税税率
  • 商贸企业固定资产可以一次性扣除吗?
  • 债务现金流量是正还是负
  • Centos7下MySQL安装教程
  • sql取两个时间的间隔天数
  • win10怎么预览文件
  • ubuntu安装超详细教程
  • 苹果电脑旋转屏幕设置在哪里找
  • centos禁用root
  • 关闭xp不需要的服务
  • centos开机grub
  • linuxdhcp服务器管理与配置
  • Win10红石版Edge浏览器新扩展功能:关灯(附扩展程序使用)
  • chm文件打不开的解决方法
  • linux定时任务详解
  • quick cocos UIListView之isItemInViewRect方法修正
  • 使用jquery操作dom
  • shell脚本用法
  • jquery控制display属性
  • jquery.js插件
  • android4.4iso
  • shell脚本怎么写循环
  • unity游戏开发简历
  • jquery 字符串
  • Android带有注册界面的简单app
  • python 性能
  • 怎么查个税交了多久
  • 开增值税发票没有销售合同也要交印花税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设