Scrapy写入MySQL
在爬虫项目中,我们经常需要将爬取到的数据存储到数据库中,以便后续的数据分析和处理。Scrapy是一个功能强大的Python爬虫框架,可以帮助我们实现数据的爬取和存储。在这篇文章中,我们将详细介绍如何使用Scrapy将数据写入MySQL数据库。
准备工作
在开始之前,我们需要做一些准备工作。首先,确保已经安装了Scrapy和MySQL数据库。可以通过以下命令来安装Scrapy:
pip install scrapy
其次,需要安装MySQL数据库,并创建一个数据库和数据表用来存储爬取到的数据。下面是一个简单的创建表的SQL语句:
CREATE TABLE `books` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`author` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
编写Scrapy爬虫
接下来,我们需要编写一个Scrapy爬虫来爬取数据并将数据存储到MySQL数据库中。假设我们要爬取一些书籍信息,并将书籍的标题和作者名存储到数据库中。我们可以创建一个名为books_spider.py
的爬虫文件,代码如下:
import scrapy
import mysql.connector
class BooksSpider(scrapy.Spider):
name = 'books'
start_urls = ['http://example.com/books']
def parse(self, response):
for book in response.css('div.book'):
title = book.css('h2.title::text').get()
author = book.css('p.author::text').get()
self.save_to_database(title, author)
def save_to_database(self, title, author):
conn = mysql.connector.connect(
host='localhost',
user='root',
password='password',
database='mydatabase'
)
cursor = conn.cursor()
sql = "INSERT INTO books (title, author) VALUES (%s, %s)"
val = (title, author)
cursor.execute(sql, val)
conn.commit()
conn.close()
在上面的代码中,我们首先导入了scrapy
和mysql.connector
模块。然后定义了一个名为BooksSpider
的爬虫类,并实现了parse
方法和save_to_database
方法。在parse
方法中,我们从网页中提取书籍的标题和作者名,然后调用save_to_database
方法将数据存储到数据库中。在save_to_database
方法中,我们连接到数据库,执行插入数据的SQL语句,并提交事务。
运行Scrapy爬虫
在编写好Scrapy爬虫代码后,我们可以通过以下命令来运行爬虫:
scrapy crawl books
在爬虫运行结束后,我们可以查看MySQL数据库中的books
表,确认数据是否已经成功写入。
总结
在本文中,我们详细介绍了如何使用Scrapy将数据写入MySQL数据库。首先我们准备了必要的环境,安装了Scrapy和创建了MySQL数据库表。然后我们编写了一个简单的Scrapy爬虫来实现数据的爬取和存储。最后我们运行了爬虫并确认数据已经成功写入数据库。