Scrapy爬取豆瓣图书保存MySQL实验

news/2024/7/19 11:39:14 标签: python, 数据库, 爬虫

一、任务描述

  本实验任务主要对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】查看该目录下的所有内容。

 

图1 切换目录

  【mkdir scrapy】在home目录下创建scrapy文件夹。

图2 创建文件夹

步骤2、数据爬取

  【cd scrapy】切换至scrapy目录下,【scrapy startproject douban】创建爬取的scrapy项目,【ll】查看创建成功的scrapy项目。

图3 创建Scrapy项目

  打开浏览器,输入豆瓣图书的地址https://read.douban.com/kind/114,可以看到,每本书的属性有:书名,作者,类别,评分,评价人数,图书介绍。

图4 URL

  【cd douban】切换至项目内,【scrapy genspider doubanspider https://read.douban.com】 会自动在spiders目录下生成一个doubanspider.py,这就是爬虫的代码模块。

图5 生成爬虫文件

  爬取的数据项。

  【cd douban】再次切换至目录下,【vim items.py】创建爬取的数据项。

图6 编辑item.py

  回车后进入编辑框内,按键盘【i】进入编辑状态,输入如下程序。

图7 编辑item.py

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。

步骤3、网站结构分析

  不同的网站有不同的结构,爬虫要爬取哪个网站,就要分析一下对应的网站结构,在浏览器中右键选择【Inspect Element(Q)】。

  可以看到,每本图书的信息都保存在一个class=”info”的div里面,其对应的xpath路径为’//div[@class=”info”]’

图8 图书信息分析

  书名在class=”title”的div下面的一个a标签里面,其对应的xpath路径为’.//div[@class=”title”]/a/text()’

图9 书名分析

  作者在class=”labeled-text”的span下面的一个a标签里面,其对应的xpath路径为’.//span[@class=”labeled-text”]/a/text()’

图10 作者分析

  类别在itemprop=”genre”的一个span里面,其对应的xpath路径为’.//span[@itemprop=”genre”]/text()’

图11 类别分析

  评分在class=”rating-average”的一个span里面,其对应的xpath路径为’.//span[@class=”rating-average”]/text()’

图12 评分分析

  评分人数在class=”ratings-links”的a下面的一个span标签里面,其对应的xpath路径为’.//a[@class=”ratings-link”]/span/text()’

图13 评分人数分析

  图书介绍在class=”article-desc-brief”的一个div里面,其对应的xpath路径为’.//div[@class=”article-brief”]/text()’

图14 图书介绍分析

  下一页的连接在class=”next”的li下面的一个a标签里面的href属性里面,其对应的xpath路径为’//li[@class=”next”]/a/@href’

图15 下一页分析

步骤4、豆瓣爬虫

  【cd spiders】切换至spiders目录下,【vim doubanspider.py】编辑创建的爬虫文件。

图16 编辑Python文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,修改并输入如下程序。

  导入要爬取的数据项,构建爬虫所需的name、URL及爬取的内容。

图17 编辑Python文件

  在parse函数内通过for循环依次得到每一项的数据。

图18 parse函数

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。

  【cd ..】返回上一级目录,【vim settings.py】编辑设置文件。

图19 编辑setting文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,修改如下数据。

图20 编辑文件

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。

  【cd ..】返回上一级目录,【scrapy crawl doubanspider -o doubanread.csv】运行Scrapy项目并将结果保存至doubanread.csv文件

图21 运行Scrapy项目

  【cat doubanread.csv】查看爬取的内容。

图22 查看爬取内容

步骤5、创建数据库

  【mysql -u root -p】回车后在Enter password:后输入密码root。回车后进入MySQL数据库

图23 登录MySQL

  【show databases】显示所有的数据库,【create database douban】创建名为douban的数据库

图24 创建数据库

  【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;】创建表。

图25 创建表

  【exit;】退出数据库

图26 退出数据库

  【cd douban】切换目录,【vim pipelines.py】编辑pipelines.py文件。

图27 编辑pupelines文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,修改如下数据

  导入MySQLdb数据库,配置数据库相关的信息。

图28 连接MySQL

  得到爬取的每一项,通过SQL语句将数据添加进入。

图29 获取爬取的每一项

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。

  【vim setting.py】编辑setting.py文件

图30 编辑setting文件

  回车后进入编辑框内,按键盘【i】进入编辑状态,修改如下数据

图31 编辑文件

  编辑完毕后,按【esc】退出编辑状态,【:wq】保存并退出编辑框。

  【cd ..】返回上一级目录,【scrapy crawl doubanspider】运行scrapy项目。

图32 运行Scrapy项目

  进入MySQL数据库;【use douban】使用数据库

图33 使用数据库

  【select * from doubanread】查看爬取的数据保存至MySQL数据库,使用Navicat等工具查看效果更好。

图34 查看数据

  【select count(*) from doubanread 】查看数据库内共有285条数据。

图35 查看数据

转载于:https://www.cnblogs.com/yu-1104/p/9050477.html


http://www.niftyadmin.cn/n/1090669.html

相关文章

Linux基础命令---mkdir,ln

mkdir 如果目录不存在,那么就创建目录。 此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、语法 mkdir [选项] dir 2、选项列表 选项 说明 --version 显示命令版本信息 --help 显示帮助文档 -m | --modeMODE 设置目…

mysql 5.1 mmm_MySQL-MMM实现MySQL高可用

一、环境简述1、工作逻辑图2、MySQL-MMM优缺点优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。缺点:Monitor节点是单点&#xf…

Linux 指令篇:档案目录管理--cp

名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。 参数: -a 尽可能将档案状态、权限等资…

[USACO15DEC]高低卡(白金)High Card Low Card (Platinum)

题目描述 Bessie the cow is a hu e fan of card games, which is quite surprising, given her lack of opposable thumbs. Unfortunately, none of the other cows in the herd are good opponents. They are so bad, in fact, that they always play in a completely predic…

yum 安装mysql httpd_centos httpd服务做yum本地源,以及安装Mysql

step0 首先centos的iso文件是有两张的,dvd1和dvd2,dvd2是额外的软件,常有的一些软件都在dvd1里面,而且repodata配置文件也在dvd1里面,如果直接把dvd2当做镜像文件是不行的,下面的有其他的方法,这…

excel数据插曲mysql_将Excel表中的数据导入MySQL数据库

背景最近接到交通学院的一个web项目,我的工作是在web页面上做个图表并且定时刷新这个图表,这里使用了Echarts API,关于如何使用,我抽时间再写一篇博客,这里主要记录一下,这个表里面的数据他们提供给我时是一…

mysql datetime 索引 性能_MySQL性能优化的21个最佳实践 和 mysql使用索引

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是…

Linux 指令篇:档案目录管理--cut

名称:cut 使用权限:所有使用者 用法:cut -cnum1-num2 filename 说明:显示每行从开头算起 num1 到 num2 的文字。 范例: shell>> cat example test2 this is test1 shell>> cut -c0-6 example ## print 开头…