一、任务描述
本实验任务主要对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】查看该目录下的所有内容。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-01-19/5a61292db01a7.png)
【mkdir scrapy】在home目录下创建scrapy文件夹。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-01-19/5a61293f92a38.png)
步骤2、数据爬取
【cd scrapy】切换至scrapy目录下,【scrapy startproject douban】创建爬取的scrapy项目,【ll】查看创建成功的scrapy项目。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fd3ba2f6ef.png)
打开浏览器,输入豆瓣图书的地址https://read.douban.com/kind/114
,可以看到,每本书的属性有:书名,作者,类别,评分,评价人数,图书介绍。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fd2d6b9188.png)
【cd douban】切换至项目内,【scrapy genspider doubanspider https://read.douban.com
】 会自动在spiders目录下生成一个doubanspider.py,这就是爬虫的代码模块。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fd50c14363.png)
爬取的数据项。
【cd douban】再次切换至目录下,【vim items.py】创建爬取的数据项。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fd5c504302.png)
回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fd77f7d96f.png)
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。
步骤3、网站结构分析
不同的网站有不同的结构,爬虫要爬取哪个网站,就要分析一下对应的网站结构,在浏览器中右键选择【Inspect Element(Q)】。
可以看到,每本图书的信息都保存在一个class=”info”的div里面,其对应的xpath路径为’//div[@class=”info”]’
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fd86b51799.png)
书名在class=”title”的div下面的一个a标签里面,其对应的xpath路径为’.//div[@class=”title”]/a/text()’
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fd8f3b7ed0.png)
作者在class=”labeled-text”的span下面的一个a标签里面,其对应的xpath路径为’.//span[@class=”labeled-text”]/a/text()’
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fd9a60ab5e.png)
类别在itemprop=”genre”的一个span里面,其对应的xpath路径为’.//span[@itemprop=”genre”]/text()’
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fda3c99429.png)
评分在class=”rating-average”的一个span里面,其对应的xpath路径为’.//span[@class=”rating-average”]/text()’
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fdacf0efa6.png)
评分人数在class=”ratings-links”的a下面的一个span标签里面,其对应的xpath路径为’.//a[@class=”ratings-link”]/span/text()’
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fdb40651e7.png)
图书介绍在class=”article-desc-brief”的一个div里面,其对应的xpath路径为’.//div[@class=”article-brief”]/text()’
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fdbb49378a.png)
下一页的连接在class=”next”的li下面的一个a标签里面的href属性里面,其对应的xpath路径为’//li[@class=”next”]/a/@href’
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fdd096a5c4.png)
步骤4、豆瓣爬虫
【cd spiders】切换至spiders目录下,【vim doubanspider.py】编辑创建的爬虫文件。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-23/5a8fdf1904c0d.png)
回车后进入编辑框内,按键盘【i】进入编辑状态,修改并输入如下程序。
导入要爬取的数据项,构建爬虫所需的name、URL及爬取的内容。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90c461dbf41.png)
在parse函数内通过for循环依次得到每一项的数据。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90c4a4d5640.png)
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。
【cd ..】返回上一级目录,【vim settings.py】编辑设置文件。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90c4e88a3ae.png)
回车后进入编辑框内,按键盘【i】进入编辑状态,修改如下数据。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90c5634ea5e.png)
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。
【cd ..】返回上一级目录,【scrapy crawl doubanspider -o doubanread.csv】运行Scrapy项目并将结果保存至doubanread.csv文件
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90c72c2f19f.png)
【cat doubanread.csv】查看爬取的内容。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90c76c54a0a.png)
步骤5、创建数据库
【mysql -u root -p】回车后在Enter password:后输入密码root。回车后进入MySQL数据库。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90d0d0002dc.png)
【show databases】显示所有的数据库,【create database douban】创建名为douban的数据库。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90d19261b73.png)
【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;】创建表。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90d1973685d.png)
【exit;】退出数据库。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90d22e4dcb3.png)
【cd douban】切换目录,【vim pipelines.py】编辑pipelines.py文件。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90d28d308c4.png)
回车后进入编辑框内,按键盘【i】进入编辑状态,修改如下数据
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90e1324a6b2.png)
得到爬取的每一项,通过SQL语句将数据添加进入。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90e163b7b13.png)
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。
【vim setting.py】编辑setting.py文件
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90e19818b37.png)
回车后进入编辑框内,按键盘【i】进入编辑状态,修改如下数据
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90e1be91545.png)
编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。
【cd ..】返回上一级目录,【scrapy crawl doubanspider】运行scrapy项目。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90f72a36b9d.png)
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90f752c3e6e.png)
【select * from doubanread】查看爬取的数据保存至MySQL数据库,使用Navicat等工具查看效果更好。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90f76ed5826.png)
【select count(*) from doubanread 】
查看数据库内共有285条数据。
![](https://showdoc.shiyanbar.com/Public/Uploads/2018-02-24/5a90f7e83b6d7.png)