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。
领取专属 10元无门槛券
私享最新 技术干货