Scrapy爬取豆瓣图书保存MySQL实验
一、任务描述
本实验任务主要对Scrapy爬取进行一些基本操作,通过完成本实验任务,要求学生熟练掌握数据爬取保存MySQL的操作,并对数据保存至MySQL的基本操作进行整理并填写工作任务报告。
二、任务目标
1、掌握Scrapy爬虫的原理
2、掌握MySQL基本操作
三、任务环境
Ubuntu16.04、Python2.7
四、任务分析
Scrapy
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
MySQL数据库
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
五、任务实施
步骤1、环境准备
右击Ubuntu操作系统桌面,从弹出菜单中选择【Open in Terminal】命令 打开终端。
通过【cd /home】切换到home目录下。【ls】查看该目录下的所有内容。
【mkdir scrapy】在home目录下创建scrapy文件夹。
步骤2、数据爬取
【cd scrapy】切换至scrapy目录下,【scrapy startproject douban】创建爬取的scrapy项目,【ll】查看创建成功的scrapy项目。
打开浏览器,输入豆瓣图书的地址https://read.douban.com/kind/114
,可以看到,每本书的属性有:书名,作者,类别,评分,评价人数,图书介绍。
【cd douban】切换至项目内,【scrapy genspider doubanspider https://read.douban.com
】 会自动在spiders目录下生成一个doubanspider.py,这就是爬虫的代码模块。
爬取的数据项。
【cd douban】再次切换至目录下,【vim items.py】创建爬取的数据项。
回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。
步骤3、网站结构分析
不同的网站有不同的结构,爬虫要爬取哪个网站,就要分析一下对应的网站结构,在浏览器中右键选择【Inspect Element(Q)】。
可以看到,每本图书的信息都保存在一个class=”info”的div里面,其对应的xpath路径为’//div[@class=”info”]’
书名在class=”title”的div下面的一个a标签里面,其对应的xpath路径为’.//div[@class=”title”]/a/text()’
作者在class=”labeled-text”的span下面的一个a标签里面,其对应的xpath路径为’.//span[@class=”labeled-text”]/a/text()’
类别在itemprop=”genre”的一个span里面,其对应的xpath路径为’.//span[@itemprop=”genre”]/text()’
评分在class=”rating-average”的一个span里面,其对应的xpath路径为’.//span[@class=”rating-average”]/text()’
评分人数在class=”ratings-links”的a下面的一个span标签里面,其对应的xpath路径为’.//a[@class=”ratings-link”]/span/text()’
图书介绍在class=”article-desc-brief”的一个div里面,其对应的xpath路径为’.//div[@class=”article-brief”]/text()’
下一页的连接在class=”next”的li下面的一个a标签里面的href属性里面,其对应的xpath路径为’//li[@class=”next”]/a/@href’
步骤4、豆瓣爬虫
【cd spiders】切换至spiders目录下,【vim doubanspider.py】编辑创建的爬虫文件。
回车后进入编辑框内,按键盘【i】进入编辑状态,修改并输入如下程序。
导入要爬取的数据项,构建爬虫所需的name、URL及爬取的内容。
在parse函数内通过for循环依次得到每一项的数据。
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。
【cd ..】返回上一级目录,【vim settings.py】编辑设置文件。
回车后进入编辑框内,按键盘【i】进入编辑状态,修改如下数据。
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。
【cd ..】返回上一级目录,【scrapy crawl doubanspider -o doubanread.csv】运行Scrapy项目并将结果保存至doubanread.csv文件
【cat doubanread.csv】查看爬取的内容。
步骤5、创建数据库
【mysql -u root -p】回车后在Enter password:后输入密码root。回车后进入MySQL数据库。
【show databases】显示所有的数据库,【create database douban】创建名为douban的数据库。
【use douban】使用数据库,
【CREATE TABLE doubanread(
id int(11) NOT NULL AUTO_INCREMENT,
book_name varchar(255) DEFAULT NULL,
author varchar(255) DEFAULT NULL,
class_ varchar(255) DEFAULT NULL,
grade varchar(255) DEFAULT NULL,
count int(11) DEFAULT NULL,
introduction varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1409 DEFAULT CHARSET=utf8;】创建表。
【exit;】退出数据库。
【cd douban】切换目录,【vim pipelines.py】编辑pipelines.py文件。
回车后进入编辑框内,按键盘【i】进入编辑状态,修改如下数据
导入MySQLdb数据库,配置数据库相关的信息。
得到爬取的每一项,通过SQL语句将数据添加进入。
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。
【vim setting.py】编辑setting.py文件
回车后进入编辑框内,按键盘【i】进入编辑状态,修改如下数据
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。
【cd ..】返回上一级目录,【scrapy crawl doubanspider】运行scrapy项目。
进入MySQL数据库;【use douban】使用数据库。
【select * from doubanread】查看爬取的数据保存至MySQL数据库,使用Navicat等工具查看效果更好。
【select count(*) from doubanread 】
查看数据库内共有285条数据。