Python中scrapy下载保存图片的方法
发表于:2024-10-18 作者:千家信息网编辑
千家信息网最后更新 2024年10月18日,这篇文章主要介绍了Python中scrapy下载保存图片的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中scrapy下载保存图片的方法文章都会有所收获,
千家信息网最后更新 2024年10月18日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安全错误
数据库的锁怎样保障安全
数据库旅游管理系统
一个服务器可以玩几个游戏
数据库分层结构设计
查询数据库 并返回值
达梦数据库不存在则创建索引
网络安全技术设置
手术室网络安全应急预案
警察网络安全锦旗
sql数据库基本结构
500本存入数据库
公司服务器归谁管理
4g软件开发专业是什么
长宁区网络技术开发优势
网站服务器安全软件下载
海南希米互联网科技公司
美团网络技术有限公司
德迅安全服务器
网络安全现状ppt
天翼杯网络安全攻防大赛
汉王科技和鲲鹏服务器有关联吗
网络安全 三要素aaa
中国软件开发的挣钱之道
数据库索引有哪些传统实现方式
软件开发的业务逻辑设计文档
网络安全护苗小报
防范网络安全50字
托管软件应用服务器图片
武胜租房软件开发
净化校园网络安全的作文
软件开发代码定制