首页 > 数据库 >scrapy——分别存储在文本文件和mysql数据库中

scrapy——分别存储在文本文件和mysql数据库中

时间:2024-03-02 12:44:05浏览次数:21  
标签:self spider 爬虫 item scrapy 文本文件 mysql coon def

笔记

如何将爬取到的数据一份存储到本地一份存储到数据库?
    - 创建一个管道类
    - 爬虫文件提交到的item指挥给管道文件中的第一个被执行的管道类接收
    - process_item方法中的return item表示将item提交给下一个管道类

在pipelines类中加入MysqlPiplines类

# 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
import pymysql

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):
        self.fp.close()


class MysqlPipeline:
    coon = None
    cursor = None
    #重写弗雷方法 该方法只在开始爬虫时调用一次
    def open_spider(self,spider):
        self.coon = pymysql.connect(host='localhost',user='root',password='your_password',db='test',charset='utf8')
        # 打开文件
    # 专门用来处理item类型对象
    # 该方法可以接收爬虫文件提交过来的item对象
    # 该方法每接收到一个item就会被调用一次
    def process_item(self, item, spider):
        self.cursor = self.coon.cursor()
        try:
            self.cursor.execute('insert into douban values ("%s","%s")'%(item['title'],item['content']))
            self.coon.commit()
        except Exception as e:
            print(e)
            self.coon.rollback()
        return item
    def close_spider(self,spider):
        print('结束爬虫!!!')
        self.cursor.close()
        self.coon.close()

在settings类中加入MysqlPiplines开启

 

标签:self,spider,爬虫,item,scrapy,文本文件,mysql,coon,def
From: https://www.cnblogs.com/lin513/p/18048500

相关文章

  • scrapy——基于管道持久化存储
    笔记-基于管道:-编码流程-数据解析-在item类中定义相关的属性-将解析的数据封装到item对象中-将item类型的对象提交给管道进行持久化存储-在管道类的process_item中要将其接收到的item对象中存储的数据进行持久化存储......
  • scrapy——终端持久化存储
    笔记-基于终端指令:-要求:只可以将parse方法的返回值存储到本地的文本文件中scrapycrawldou-o./douban.csv-注意:持久化存储的类型只可以是'json','jsonlines','jsonl','jl','csv','xml','marshal','pickle'这些......
  • 使用 Docker 部署 Nacos 并配置 MySQL 数据源
    前言在安装Nacos之前,请确保你已经准备好了一个运行中的MySQL数据库。本教程将指导您如何使用Docker在单机模式下部署Nacos,并将其数据持久化到MySQL中。步骤一:拉取Nacos镜像拉取最新版本的NacosServer镜像,也可以指定特定版本:dockerpullnacos/nacos-server如果你......
  • 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......
  • MySQL查看执行过的SQL语句
    更新记录点击查看2024年3月2日发布。开启和关闭日志记录(临时)默认情况下mysql是不会记录最近执行sql语句的,需要手动开启才能记录。另外sql语句有两种方式记录,记录到table,记录到文件。另外开启日志记录多少会占用性能,适合开发测试环境使用。--临时设置,重启MySQL服务失效......
  • MySQL-开启binlog
    要在MySQL中开启二进制日志(Binlog),可以按照以下步骤操作:打开MySQL配置文件my.cnf。该文件通常位于/etc/my.cnf、/etc/mysql/my.cnf或者/usr/local/mysql/my.cnf。查找并编辑[mysqld]部分的内容。如果没有这个部分,则添加以下行到文件末尾:[mysqld]。在[......
  • MySQL如何查看/监控/处理账号密码过期问题
    MySQL8.0.x中,我们如果按安全规范配置了账号密码过期策略的话,那么如何查看账号密码还有多长时间就会过期;如何做好账号密码过期监控;以及提前及时处理账号密码过期问题就是DBA必须处理的一些事情。这里简单讨论一下这些事情。个人经验仅供参考,如有不足或错误的地方,敬请指正一二。这......
  • 数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性​!
    体验地址:https://developer.aliyun.com/topic/march/polardbserverless本次基于阿里云瑶池数据库解决方案体验馆,带你体验PolarDBMySQLServerless形态下的性能压测环境,基于可选择的标准压测工具进行压测,构造弹性场景进行压测,实时动态展示弹性能力、价格和性价比结果,压测环境可开......
  • mysql8的sql_mode不起作用
    如果sql_mode似乎没有起作用,可能是由以下几个原因造成的:配置文件位置不正确:确保my.ini文件位于MySQL服务器实际读取配置的位置。对于Windows系统,这通常是MySQL安装目录下的bin文件夹。对于Linux系统,它可能位于/etc/mysql/、/etc/my.cnf或~/.my.cnf等位置。MySQL服务未重启:对......