首页 > 其他分享 >Scrapy_ImagePipeline保存图片

Scrapy_ImagePipeline保存图片

时间:2023-06-24 19:00:44浏览次数:30  
标签:None name get 保存 item Scrapy ImagePipeline import scrapy

创建一个项目

scrapy startproject myfrist(project_name)

创建一个爬虫

scrapy genspider 爬虫名 爬虫地址

需要安装pillow

pip install pillow

报错:twisted.python.failure.Failure OpenSSL.SSL.Error

解决方案

pip uninstall cryptography

pip install cryptography==36.0.2

代码    文件名:     爬虫名.py

通过xpath确定图片的地址和名字,然后yield推送过去

import scrapy


class ZolSpider(scrapy.Spider):
    name = "爬虫名"
    allowed_domains = ["域名"]
    start_urls = ["图片地址"]

    def parse(self, response):
        url = response.xpath('//img[@id="bigImg"]/@src').get()
        name = response.xpath('string(//h3)').get()
        yield {'image_url':url,'name':name}

文件名:pipeline.py

图片管道scrapy.pipelines.images import ImagesPipeline

get_media_requests(self, item, info)方法:

  • 发送请求,下载图片
  • 转发文件名

实现file_path(self, request, response=None, info=None, *, item=None)

  • 修改文件名与保存路径
from scrapy.pipelines.images import ImagesPipeline
from scrapy.http.request import Request
import re 
class MyImagePipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        # print(item.get('image_urls'))
        return Request(item['image_url'])

    def file_path(self, request, response=None, info=None, *, item=None):
        # 处理文件名中的特殊字符
        # name = item.get('name').strip().replace('\r\n\t\t','').replace('(','').replace(')','').replace('/','_')
        name = re.sub('/','_',re.sub('[\s()]','',item.get('name')))
        return f'{name}.jpg'

修改setting.py

保存路径

IMAGES_STORE = r"./imgs"

通道调用MyImagePipeline

ITEM_PIPELINES = {
   "scrapy04.pipelines.MyImagePipeline": 300
}

建立一个请求头

USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"

 

标签:None,name,get,保存,item,Scrapy,ImagePipeline,import,scrapy
From: https://www.cnblogs.com/jiangjiayun/p/17501506.html

相关文章

  • Scrapy框架爬取豆瓣图书实例
    douban.pyimportscrapyimporttimefrombs4importBeautifulSoupfromscrapyimportRequestfromScripts.ScrapyProject.itemsimportbookItemclassDoubanSpider(scrapy.Spider):name="douban"allowed_domains=["book.douban.com&......
  • python爬取一些文字信息并保存到表格
    #coding:utf-8'''获取验证码自动登录'''importopenpyxlfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportSelectimporttimeimportreimportrandomimportpandasa......
  • 用python写一个保存文本到文件的函数
    用python写一个保存文本到文件的函数━━━━━━━━━━━━━━━━━━━━━━━━━可以通过Python的文件操作来实现保存文本到文件的功能。下面是一个保存文本到文件的函数的示例:defsave_text_to_file(text,file_path):try:withopen(file_path,'w')a......
  • WPF-配置文件保存和读取
    方法一:属性-设置1,在项目工程名称上》右键属性》设置 2,设置和保存(保存按钮对应的代码)privatevoidBtn_save_Click(objectsender,RoutedEventArgse){intquantity=0;int.TryParse(txt_ToolQuantity.Text.Trim(),outquanti......
  • 在system32文件夹中,config子文件夹存储了Windows注册表的备份文件。注册表是Windows操
    system32是Windows操作系统中的一个文件夹,它位于C:\Windows\system32路径下。这个文件夹包含了许多重要的系统文件和设置,它们对于操作系统的正常运行非常关键。在system32文件夹中,config子文件夹存储了Windows注册表的备份文件。注册表是Windows操作系统中的一个重要组成部分,它保......
  • SQL Server 数据格式修改时,没有保存按钮的情况解决
    如果你使用的是SQLServer2008,当你修改数据结构后,保存时会报下图情况:Savingchangesisnotpermitted.Thechangesyouhavemaderequirethefollowingtablestobedroppedandre-created.Youhaveeithermadechangestoatablethatcan'tbere-createdorenabled......
  • 微信小程序,wx.getUserProfile接口将被收回,新的头像获取方式永久保存
    微信文档:https://developers.weixin.qq.com/miniprogram/dev/framework/新的获取头像方式:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html这种方式,返回的路径是返回的临时路径,保存在本地。如果要永久保存的,我的做法是通过FileSys......
  • 屏幕转换保存状态
    publicclassVideoextendsActivity{ publicstaticfinalStringTAG="Video"; privateVideoViewvideoObject; privateStringvideoLocation; privateintvideoPosition; @OverridepublicvoidonCreate(BundlesavedInstanceState){......
  • Picture专成Bitmap并保存到sd卡
    Bitmapb=Bitmap.createBitmap(picture.getWidth(),picture.getHeight(),Bitmap.Config.ARGB_8888);Canvasc=newCanvas(b);picture.draw(c);FileOutputStreamfos=null;try{......
  • 从pandas dataframe保存csv文件,不带双引号
    为了保存来自pandasdataframe的csv文件,我尝试了以下方法:res.to_csv('seq_test.fa',header=False,index=False,sep='\t',quoting=csv.QUOTE_NONE)复制这给出了以下错误:needtoescape,butnoescapecharset如果我不使用quoting=csv.QUOTE_NONE。我通过以下方式......