zoukankan      html  css  js  c++  java
  • 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】查看该目录下的所有内容。

    图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 查看数据
  • 相关阅读:
    hdu1754:I Hate It
    hdu1166
    bzoj1642:挤奶时间
    线段树
    bzoj1699:排队
    bzoj3438: 小M的作物
    bzoj2127: happiness
    bzoj2768[JLOI2010]冠军调查
    bzoj1070[SCOI2007]修车
    bzoj1305[CQOI2009]dance跳舞
  • 原文地址:https://www.cnblogs.com/yu-1104/p/9050477.html
Copyright © 2011-2022 走看看