首页 > 其他分享 >怎么使用 Scrapy 框架自带的 pipelines

怎么使用 Scrapy 框架自带的 pipelines

时间:2023-02-13 15:48:09浏览次数:39  
标签:files pipelines file scrapy FilesPipeline Scrapy urls 自带

目录

定义一个 item

参数要设置为 file_urls 和 files
调用时 files 可以不写,有默认值

class PipelineFilepipelines(scrapy.Item):
    file_urls = scrapy.Field()
    files = scrapy.Field()

启用默认的 FilesPipeline

把这串代码在 settings 加入 ITEM_PIPELINES 的字典里
'scrapy.pipelines.files.FilesPipeline': 300,

配置一个下载路径(FILE_STORE)

在 settings 里设置的,随便找个位置放就行了,记得看好自己写的目录是在哪,别最后找不到了。
FILES_STORE = './files'

调用 items

在自己的爬虫主文件里导入,我这里是 douban.py

from ..items import PipelineFilepipelines

主文件下载做法

def parse(self, response):
	...
	files_urls = ['https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.webp']
	yield PipelineFilepipelines(
				file_urls=files_urls,
			)
	...

在 parse() 里放进这样格式的内容就行了。
需要注意的有

  1. 调用时 files 可以不写,有默认值,我这里就没写
  2. file_urls 接收的是列表,所以得传一个列表过去

精细化操作

以上做法简单却也简陋,很多事情做不了,比如更改下载的文件名,设置请求头等
所以还是自己创建一个 pipelines,然后对接 FilesPipeline 更好。
如下代码。

from scrapy.pipelines.files import FilesPipeline

class PipelinesTest(FilesPipeline):

    def file_path(self, request, response=None, info=None, *, item=None):
        '''
        设置下载文件名称的
        '''
        # https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.webp
        return request.url.split('/')[-1]

    def get_media_requests(self, item, info):
        '''
        设置一个下载请求信息的, 有些文件设置了防盗链的时候,可以在这里设置请求头之类的。
        '''
        for url in item['file_urls']:
            print('运行中')
            yield scrapy.Request(
                url,
                headers={
                    "referer": "https://movie.douban.com/"
                }
            )

注意的有

  1. 记得去启用这个自己创建的管道 'SpriderTest.pipelines.PipelinesTest': 300,
  2. 记得导入 FilesPipeline
    from scrapy.pipelines.files import FilesPipeline

标签:files,pipelines,file,scrapy,FilesPipeline,Scrapy,urls,自带
From: https://www.cnblogs.com/aduiduidui/p/17116560.html

相关文章

  • 利用bootstrap-table插件自带的打印功能打印表格
    文章目录​​1、前端代码:​​​​2、前端页面:​​​​1、表格数据展示​​​​2、点击打印按钮之后:​​​​3、插件下载地址:​​​​4、碰到的bug​​1、前端代码:<linkhre......
  • 学完Scrapy-Splash秒变爬虫大佬
    在做爬虫的时候,大多数的网页中会存在数据动态加载的部分,而且多数都是后期渲染上的。正常情况下爬虫程序仅能爬取被渲染过的数据。因此我们看到的数据也许并非是爬虫直接获......
  • scrapy爬取图片
    classFctpItem(scrapy.Item):#definethefieldsforyouritemherelike:image_urls=scrapy.Field()images=scrapy.Field()fromscrapy.pipeli......
  • Scrapy 框架的 pipelines 参数详解
    目录pipelines的使用一个例子pipelines常用的函数pipelines的使用在pipelines.py中创建pipelines的类。(也可用默认存在的类)classPipelinesTest:defp......
  • Scrapy 框架的 spider 参数
    目录Spider的用法变量函数Spider的常用解析函数response对象相关函数Spider的用法变量#名字,要求全局唯一name='douban'#运行爬取的网址allowed_domains=['......
  • django自带user模型扩展
    扩展/定制用户认证系统本小节参照官方帮助文档,扩展Django的User类,实现用户信息的录入和管理。CustomizingauthenticationinDjango(https://docs.djangoproject.com/en......
  • Scrapy 框架的使用
    目录从0爬取豆瓣TOP250电影榜单大概的一个规划初始准备工作创建一个爬虫项目创建一个爬虫规则进入爬虫项目修改settings.py配置文件设置日志类型使得scrapy框架不遵守......
  • [threeJS]--- 外部导入的模型如何编程式实现帧动画以及调用模型自带的动画
    1.代码中编写帧动画并且调用 asyncfunctionkeyframeAni(object){consttimes=[0,2];//关键帧时间数组,单位'秒'constrorateValues=[0,-Math.PI*2];......
  • 惠普HP M126a打印机用自带驱动无法实现共享打印
     解决办法:使用p1108打印驱动替换m126a打印驱动。分2种情况,需要扫描功能和不需要扫描功能。需要扫描功能的先安装好m126a驱动套件,不需要扫描功能的直接下载p1108驱动。......
  • IOS开发者自带弱网测试工具界面说明NETWORK LINK CONDITIONER
    IOS手机的开发者自带了弱网模拟工具,以下是界面说明,便于大家使用时自行配置使用。测试工具NETWORKLINKCONDITIONER。1、准备环境,设置中调出:开发者选项(如果没有,需要真机联......