scrapy持久化存储

1、基于终端命令存储

1、基于终端的持久化存储:只可以将 parse方法里的返回值存储到 本地文件中。
2、持久化存储的文件类型只可为:json、jsonlines、jl、csv、xml
3、操作: scrapy crawl xxx -o filePath
4、优缺点:局限性强,只能存储上述的文件类型,但方便简洁。

2、基于管道存储

1、定义属性

在item类中定义相关属性,

scrapy持久化存储
; 2、封装对象

讲解析到的数据封装存储到item类型的对象中

scrapy持久化存储
3、提交item对象

将item类型的对象提交给管道进行持久化存储

上图的

yield item
4、持久化存储操作

在管道文件中的process_item中将接收到的item对象中存储的数据进行持久化存储操作。(存储在mysql中)


import pymysql

from itemadapter import ItemAdapter

class QiushibaikePipeline:
    fp = None

    def open_spider(self, spider):
        print("Begin......")
        self.fp = open("./qiushi.txt", 'w', encoding='utf-8')

    def process_item(self, item, spider):
        author = item['author']
        content = item['content']

        self.fp.write(author + ":" + content + "\n")

        return item

    def close_spider(self, spider):
        print("End......")
        self.fp.close()

class mysqlPipeline(object):
    conn = None
    cursor = None

    def open_spider(self, spider):
        self.conn = pymysql.Connect(host='localhost', user='root', password='123456', port=3306, db="qiushibaike", charset='utf8')

    def process_item(self, item, spider):
        self.cursor =self.conn.cursor()
        try:
            self.cursor.execute('insert into qiushibaike values("%s","%s")'%(item['author'], item['content']))
            self.conn.commit()
        except Exception as e:
            print(e)
            self.conn.rollback()

            return item

    def close_spider(self, spider):
        self.cursor.close()
        self.conn.close()

要先建立好对应的数据库数据表
可以使用终端命令

mysql-uroot -p

开启数据库,然后输入密码,在输入

creata database 数据库名

创建好数据库后,转入这个数据库

use 数据库名

创建表单

create table 表单名(类型)

然后exit退出

5、配置文件

scrapy持久化存储
只有在配置中写入的管道类,该类才会执行,对应的后面数值表示的是执行顺序。
要注意的是:爬虫文件提交的item只会给管道中的第一个被执行的管道类接收,如果有若干个管道类的话,就要在被传入的管道类里在传出item类型。
return item

为了编写方便,建议在每一个管道类中都返回一次item,以便在之后修改代码时提供便利。

Original: https://blog.csdn.net/weixin_44457673/article/details/117814910
Author: 独角兽小马
Title: scrapy持久化存储

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/791305/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球