scrapy爬取图片和视频文件

图片的爬取

在隧道文件中导入:

from scrapy.pipelines.images import ImagesPipeline

给ImgPipeline继承:

class ImgproPipeline(ImagesPipeline):

导入三个函数:

获取地址和标题或其它想要传输的数据


def get_media_requests(self, item, info):
     #获取图片地址和标题
    img_src = item['img_url']
    title = item['title']
    #最后管道传输
    yield scrapy.Request(img_src,meta={'title':title})

指定图片的名称(只需要返回图片存储的名称即可)   

   def file_path(self, request, response=None, info=None, *, item=None):

          imgName = request.meta['title']+'.jpg'

          print(imgName,'下载保存成功!')

          return imgName

可以将当前的管道类接收到item对象传递给下一个管道类2

 #如果没有下一个管道类,该方法可以不写
      def item_completed(self, results, item, info):
          return item 

可配置项(写在配置文件中)

  IMAGES_STORE = 'girlsLib' #设置图片保存的根目录。将图片文件保存在此目录下的子目录中。
  IMAGES_THUMBS = {
      'small': (50, 50),  # 生成缩略图的尺寸
      'big': (270, 270),
  }

文件流程

编码流程:

  - 在`spider`中爬取要下载的文件链接,将其放置于item中的`file_urls`字段中存储

  - spider提交item给FilesPipeline管道

  - 当`FilesPipeline`处理时,它会检测是否有`file_urls`字段,如果有的话,则会对其进行文件下载

  - 下载完成之后,会将结果写入item的另一字段`files`

​ **`Item`要包含`file_urls`和`files`两个字段**

- 配置文件保存路径(settings.py):

```python

FILES_STORE  = ’xxxxxx‘

items文件

import scrapy

class FileproItem(scrapy.Item):
    files = scrapy.Field()
    file_urls = scrapy.Field()
    title = scrapy.Field()

管道文件

from scrapy.pipelines.files import FilesPipeline
import scrapy
class ImgproPipeline(FilesPipeline):
    def get_media_requests(self, item, info):
        file_urls = item['file_urls']
        title = item['title']
        yield scrapy.Request(file_urls,meta={'title':title})
    #指定文件的名称(只需要返回文件存储的名称即可)
    def file_path(self, request, response=None, info=None, *, item=None):
        fileName = request.meta['title']
        print(fileName,'下载保存成功!')
        return fileName
    #如果没有下一个管道类,该方法可以不写
    def item_completed(self, results, item, info):
        return item #可以将当前的管道类接收到item对象传递给下一个管道类2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值