首页 > 其他分享 >scrapy——基于管道持久化存储

scrapy——基于管道持久化存储

时间:2024-03-02 12:23:44浏览次数:21  
标签:存储 持久 title self content item scrapy div

笔记

- 基于管道:
    - 编码流程
        -数据解析
        - 在item类中定义相关的属性
        - 将解析的数据封装到item对象中
        - 将item类型的对象提交给管道进行持久化存储
        - 在管道类的process_item中要将其接收到的item对象中存储的数据进行持久化存储
        - 在配置文件中开启管道
    - 好处:通用性强

代码

import scrapy
from douban.items import DoubanItem
class DouSpider(scrapy.Spider):
    name = "dou"
    #allowed_domains = ["www.douban.com"]
    start_urls = ["https://www.douban.com/doulist/113652271/"]
  
    #管道持久化存储
    def parse(self, response):
        div_ = response.xpath('/html/body/div[3]/div[1]/div/div[1]')
        div_list = div_.xpath('./div[contains(@class, "doulist-item")]')
        for div in div_list:
            # print(div)
            title = div.xpath('./div/div[2]/div[2]/a/text()')[0].extract()
            content = div.xpath('./div/div[2]/div[4]/text()').extract_first()
            dic = {
                'title':title,
                'content': content
            }
            item = DoubanItem()
            item['title'] = title
            item['content'] = content
            #将item提交给管道
            yield  item

pipelines类

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class DoubanPipeline:
    fp = None
    #重写弗雷方法 该方法只在开始爬虫时调用一次
    def open_spider(self,spider):
        print('开始爬虫!!!')
        # 打开文件
        self.fp = open('douban.txt','w',encoding='utf-8')
    # 专门用来处理item类型对象
    # 该方法可以接收爬虫文件提交过来的item对象
    # 该方法每接收到一个item就会被调用一次
    def process_item(self, item, spider):
        title_ = item['title']
        content_ = item['content']
        self.fp.write(title_+':'+content_+'\n')
        return item
    def close_spider(self,spider):
        print('结束爬虫!!!')
        self.fp.close()

items类

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class DoubanItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    title = scrapy.Field()
    content = scrapy.Field()
    #pass

settings类中开启管道存储

标签:存储,持久,title,self,content,item,scrapy,div
From: https://www.cnblogs.com/lin513/p/18048473

相关文章

  • scrapy——终端持久化存储
    笔记-基于终端指令:-要求:只可以将parse方法的返回值存储到本地的文本文件中scrapycrawldou-o./douban.csv-注意:持久化存储的类型只可以是'json','jsonlines','jsonl','jl','csv','xml','marshal','pickle'这些......
  • scrapy
    scrapy框架-什么是框架-就是集成了很多功能并且具有很强通用性的一个项目模板-如何学习框架-专门学习框架封装的各种功能的详细用法-什么是scrapy-爬虫中封装好的一个明星框架。-功能:高性能的持久化存储,异步的数据下载,高性能的数据解析,分布式......
  • scrapy数据解析
    importscrapyclassDouSpider(scrapy.Spider):name="dou"#allowed_domains=["www.douban.com"]start_urls=["https://www.douban.com/doulist/113652271/"]defparse(self,response):div_=response......
  • Spectrum高速采集存储系统
    产品简介:♦连续(无丢失)数据记录♦传输度高达3GByte/s♦一体化系统解决方案♦从1到32T的数据存储空间♦单发和多(分段)倍记录模式更多信息请加weixin-pt890111获取连续(无丢失)数据记录可保证的传输流速高达3GByte/s一体化系统解决方案从1到32T的数据存储空间单发和多倍......
  • docker更换存储路径
    方案一:创建或修改`daemon.json`文件。在Docker1.12或以上版本中,可以通过创建或修改`/etc/docker/daemon.json`文件来指定新的存储路径。例如,在文件中添加`"data-root":"/home/docker"`,然后重启Docker服务。345方案二:使用软链接。首先,停止Docker服务,移动现有的`/......
  • 【Serverless】云存储新建账号无法创建存储实例解决方案
    ​ 【问题描述】一些开发者想要使用AGC云存储服务,在开通服务后,需要创建一个存储实例,但是在点击创建按钮时,出现了未知错误的报错提示,创建失败。​【解决方案】获取到了开发者的浏览器报错日志后,发现了在创建Bucket时返回了“138012:invokeqmserror”的错误。​​随后在咨询......
  • C++static 存储类
    1#include<iostream>23//函数声明4voidfunc(void);56intmain()7{8intcount=10;9while(count--)10{11func();12std::cout<<",变量count为"<<count<<std::endl;13......
  • SQL Server存储过程
    SQLServer中视图通过简单的SELECT查询来解决复杂的查询,但是视图不能提供业务逻辑功能,而存储过程可以办到这点。什么是存储过程?存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。存储过程中可......
  • 【C++】Mat和Pat希望邀请他们的朋友来参加派对。他们要编写一个程序完成下面的任务。
    Mat和Pat希望邀请他们的朋友来参加派对。他们要编写一个程序完成下面的任务。让Mat输入他朋友的姓名列表。姓名存储在一个容器中,然后按排列后的顺序显示出来。让Pat输入她朋友的姓名列表。姓名存储在另一个容器中,然后按排列后的顺序显示出来。创建第三个容器,将两个列表合并,删除重......
  • nas存储
    参考文档:文件存储NAS一、nas是什么NAS全称为NetworkAttachedStorage(网络附属存储),简单理解就是专门用来存储数据、且可以连接网络的一种存储设备。NAS主要特点是将存储与服务器相分离,抛开传统服务器运行带宽压力,集中做数据管理部分,从而实现低成本、高效率的数据存储。它是一种......