Python中scrapy下载保存图片的方法
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍了Python中scrapy下载保存图片的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中scrapy下载保存图片的方法文章都会有所收获,
千家信息网最后更新 2024年09月22日Python中scrapy下载保存图片的方法
这篇文章主要介绍了Python中scrapy下载保存图片的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中scrapy下载保存图片的方法文章都会有所收获,下面我们一起来看看吧。
在日常爬虫练习中,我们爬取到的数据需要进行保存操作,在scrapy中我们可以使用ImagesPipeline这个类来进行相关操作,这个类是scrapy已经封装好的了,我们直接拿来用即可。
在使用ImagesPipeline下载图片数据时,我们需要对其中的三个管道类方法进行重写,其中 ― get_media_request 是对图片地址发起请求
― file path 是返回图片名称
― item_completed 返回item,将其返回给下一个即将被执行的管道类
那具体代码是什么样的呢,首先我们需要在pipelines.py文件中,导入ImagesPipeline类,然后重写上述所说的3个方法:
from scrapy.pipelines.images import ImagesPipelineimport scrapyimport os class ImgsPipLine(ImagesPipeline): def get_media_requests(self, item, info): yield scrapy.Request(url = item["img_src"],meta={"item":item}) #返回图片名称即可 def file_path(self, request, response=None, info=None): item = request.meta["item"] print("########",item) filePath = item["img_name"] return filePath def item_completed(self, results, item, info): return item
方法定义好后,我们需要在settings.py配置文件中进行设置,一个是指定图片保存的位置IMAGES_STORE = "D:ImgPro",然后就是启用"ImgsPipLine"管道,
ITEM_PIPELINES = { "imgPro.pipelines.ImgsPipLine": 300, #300代表优先级,数字越小优先级越高}
设置完成后,我们运行程序后就可以看到"D:ImgPro"下保存成功的图片。
完整代码如下:
spider文件代码:
# -*- coding: utf-8 -*-import scrapyfrom imgPro.items import ImgproItem class ImgSpider(scrapy.Spider): name = "img" allowed_domains = ["www.521609.com"] start_urls = ["http://www.521609.com/daxuemeinv/"] def parse(self, response): #解析图片地址和图片名称 li_list = response.xpath("//div[@class="index_img list_center"]/ul/li") for li in li_list: item = ImgproItem() item["img_src"] = "http://www.521609.com/" + li.xpath("./a[1]/img/@src").extract_first() item["img_name"] = li.xpath("./a[1]/img/@alt").extract_first() + ".jpg" # print("***********") # print(item) yield item
items.py文件
import scrapy class ImgproItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() img_src = scrapy.Field() img_name = scrapy.Field()
pipelines.py文件
from scrapy.pipelines.images import ImagesPipelineimport scrapyimport osfrom imgPro.settings import IMAGES_STORE as IMGS class ImgsPipLine(ImagesPipeline): def get_media_requests(self, item, info): yield scrapy.Request(url = item["img_src"],meta={"item":item}) #返回图片名称即可 def file_path(self, request, response=None, info=None): item = request.meta["item"] print("########",item) filePath = item["img_name"] return filePath def item_completed(self, results, item, info): return item
settings.py文件
import randomBOT_NAME = "imgPro" SPIDER_MODULES = ["imgPro.spiders"]NEWSPIDER_MODULE = "imgPro.spiders" IMAGES_STORE = "D:ImgPro" #文件保存路径LOG_LEVEL = "WARNING"ROBOTSTXT_OBEY = False#设置user-agentUSER_AGENTS_LIST = [ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1", "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6", "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5", "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3", "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3", "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24" ]USER_AGENT = random.choice(USER_AGENTS_LIST)DEFAULT_REQUEST_HEADERS = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en", # "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "User-Agent":USER_AGENT} #启动pipeline管道ITEM_PIPELINES = { "imgPro.pipelines.ImgsPipLine": 300,}
关于"Python中scrapy下载保存图片的方法"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Python中scrapy下载保存图片的方法"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
图片
方法
文件
名称
管道
代码
知识
优先级
内容
地址
数据
篇文章
成功
三个
代表
价值
位置
就是
所说
操作简单
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
微信清粉软件开发
苏州戴尔服务器维修
上海直播软件开发
暗黑2重制pc版服务器连接不上
昆明理工大学数据库作业模板
无锡 直销软件开发
酒店管理服务器配置
富士通和IBM服务器
广西大学数据库原理
数据库技术全集
软件开发课程可以做什么工作
为什么要用网络服务器
宁夏北网网络技术有限公司
新时达服务器故障大全
如何定制mc服务器手机客户端
潮州微信小程序软件开发
数据库清空表
测试网络安全稳定方法
肥西综合网络技术咨询怎么样
万人在线游戏服务器价
战地4加入服务器
域名网络技术
服务器pin是什么
电子商务的网络技术真题
暗黑2重制pc版服务器连接不上
db2数据库64位 下载
江西app软件开发一般要多少钱
软件开发中的六型要求
镇江软件开发招骋
金山区企业网络技术服务多少钱