c语言编程笔录

首页 >   > 笔记大全

笔记大全

Scrapy怎么将数据保存到Excel和MySQL中

更新时间:2023-10-17

Scrapy如何将数据保存到Excel

使用Scrapy将爬取到的数据保存到Excel,需要使用Python的pandas库。pandas是一个强大的数据分析库,可以用来处理各种数据类型,包括Excel文件。

import pandas as pd

class MySpider(scrapy.Spider):
    name = 'mySpider'

    def parse(self, response):
        # 爬虫逻辑
        pass

    def closed(self, reason):
        # 抓取结束时执行
        items = self.crawler.stats.get_value('items')  # 获取爬取到的items
        df = pd.DataFrame(items)  # 转为DataFrame格式
        df.to_excel('output.xlsx', index=False)  # 保存到Excel

Scrapy如何将数据保存到MySQL

使用Scrapy将爬取到的数据保存到MySQL中,需要使用Python的MySQLdb库。这个库可以让Python程序连接MySQL数据库,实现数据的存取。

import MySQLdb

class MySpider(scrapy.Spider):
    name = 'mySpider'

    def __init__(self, *args, **kwargs):
        super(MySpider, self).__init__(*args, **kwargs)
        self.connection = MySQLdb.connect(
            host='localhost',  # 主机地址
            user='root',  # 用户名
            passwd='password',  # 密码
            db='mydatabase'  # 数据库名
        )
        self.cursor = self.connection.cursor()

    def parse(self, response):
        # 爬虫逻辑
        pass

    def closed(self, reason):
        # 抓取结束时执行
        items = self.crawler.stats.get_value('items')  # 获取爬取到的items
        for item in items:
            sql = "INSERT INTO mytable (column1, column2, column3) VALUES ('{}', '{}', '{}')".format(
                item['column1'], item['column2'], item['column3'])
            self.cursor.execute(sql)  # 执行SQL语句
        self.connection.commit()  # 提交事务

如何在Scrapy爬虫中配置MySQL数据库

在Scrapy爬虫中配置MySQL数据库需要在settings.py文件中添加相应的设置。

MYSQL_HOST = 'localhost'  # 数据库地址
MYSQL_USER = 'root'  # 用户名
MYSQL_PASSWORD = 'password'  # 密码
MYSQL_DB = 'mydatabase'  # 数据库名

ITEM_PIPELINES = {
    'myproject.pipelines.MySqlPipeline': 300,  # 表示使用MySqlPipeline处理数据
}

class MySqlPipeline(object):
    def __init__(self, host, user, password, db):
        self.connection = MySQLdb.connect(
            host=host,
            user=user,
            passwd=password,
            db=db
        )
        self.cursor = self.connection.cursor()

    @classmethod
    def from_crawler(cls, crawler):
        return cls(
            host=crawler.settings.get('MYSQL_HOST',
                'localhost'),
            user=crawler.settings.get('MYSQL_USER',
                'root'),
            password=crawler.settings.get('MYSQL_PASSWORD',
                'password'),
            db=crawler.settings.get('MYSQL_DB', 'mydatabase')
        )

    def process_item(self, item, spider):
        sql = "INSERT INTO mytable (column1, column2, column3) VALUES ('{}', '{}', '{}')".format(
            item['column1'], item['column2'], item['column3'])
        self.cursor.execute(sql)
        self.connection.commit()
        return item

    def close_spider(self, spider):
        self.connection.close()

总结

Scrapy是一个强大的爬虫框架,支持将爬取到的数据保存到Excel和MySQL中。如果需要将数据保存到Excel,需要使用Python的pandas库;如果需要将数据保存到MySQL中,需要使用Python的MySQLdb库。同时,在Scrapy爬虫中配置MySQL数据库也需要相应的设置,可以在settings.py文件中添加。