首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

神级程序员用Scrapy爬取豆瓣图书这一项目带你成功入职企业!完美

Scrapy 是一个纯Python语言写的爬虫框架,本次用它来爬取豆瓣图书的数据。在给大家分享之前呢,小编推荐一下一个挺不错的交流宝地,里面都是一群热爱并在学习Python的小伙伴们,大几千了吧,各种各样的人群都有,特别喜欢看到这种大家一起交流解决难题的氛围,群资料也上传了好多,各种大牛解决小白的问题,这个Python群:330637182 欢迎大家进来一起交流讨论,一起进步,尽早掌握这门Python语言。

douban目录下的内容

douban/douban 下面是代码放置的地方,douban/scrapy.cfg 是 Scrapy 的一些配置

构建要爬取的数据项

首先来看一下我们要爬取的网站 豆瓣图书

豆瓣图书

可以看到,每本书的属性有:书名,,类别,评分,评价人数,图书介绍。

将命令行切换至 douban 目录: cd douban

注释:class_字段有一个下划线是因为要与 python 里的关键字 class 区分开

网站结构分析

不同的网站有不同的结构,我们的爬虫要爬取哪个网站,就要先分析一下对应的网站结构。看一下豆瓣图书的网站结构,在浏览器中按下 F12 打开开发者工具。

可以看到,每本图书的信息都保存在一个 class="info" 的 di 里面,其对应的 xpath 路径为

"//di[@class="info"]"

豆瓣图书网站构成

书名在 class="title" 的 di 下面的一个 标签里面,其对应的 xpath 路径为

".//di[@class="title"]/a/text()"

书名

在 class="labeled-text" 的 span 下面的一个 标签里面,其对应的

xpath 路径为

".//span[@class="labeled-text"]/a/text()"

类别在 itemprop="genre" 的一个 span 里面,其对应的 xpath 路径为

".//span[@itemprop="genre"]/text()"

类别

评分在 class="rating-aerage" 的一个 span 里面,其对应的 xpath 路径为

".//span[@class="rating-aerage"]/text()"

评分

评价人数在 class="ratings-link" 的 a 下面的一个 标签里面,其对应的 xpath 路径为

".//a[@class="ratings-link"]/span/text()"

评价人数

图书介绍在 class="article-desc-brief" 的一个 di 里面,其对应的 xpath 路径为

".//di[@class="article-desc-brief"]/text()"

图书介绍

下一页的链接在 class="next" 的 li 下面的一个 标签里面的 href 属性里面,其对应的 xpath 路径为

"//li[@class="next"]/a/@href"

后页

注释:XPath 是一门在 XML 文档中查找信息的语言, 在这里查看XPath的语法

开始写爬虫

修改 doubanspider.py 如下:

为了防止网站禁止爬虫,我们需要修改一下 settings.py 里的几项:

不出错的话,会在命令行打印出我们爬取的每个数据项,然后保存到

doubanread.cs 文件里

doubanread.cs

注释:这里生成的cs文件用Excel直接打开会发现乱码,具体解决办法我还没找到,这里使用notepad++打开。

将数据保存到Mysql数据库

首先新建数据库,我在 bistu 数据库下新建了一个 doubanread 表

数据库建立

对应的 SL 如下:

注释:你没有猜错, pipelines.py 就是 scrapy 框架用来与数据库交互的地方,在此之前,我们需要安装 pysql ,安装方法与 scrapy 的安装方法一样:

conda install scrapy

pip install scrapy

只修改了 pipelines.py 还不行,我们还需要修改一个文件,就是之前的 settings.py 文件,找到这里,,将注释取消掉:

谢谢阅读,希望本文能帮助到你更好的学习Scrapy。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180301A0V89N00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券