使用Scrapy爬虫框架爬取books.toscrape.com上书籍的相关信息并存储为csv文件

此处准备使用Scrapy爬虫框架对 http://books.toscrape.com/(一个专门用来被爬取的网站)上书籍的相关信息进行爬取。

相关信息包括:书名、价格、评价等级、库存量、产品编码、评价数量。


首先进行页面分析:

这里补充一下,通常现在的浏览器都会对html文本进行一定的规范化, 所以在使用Chrome等浏览器自带的XPath路径的时候, 有可能会导致读取失败。
虽然很多时候用view命令加载出的页面和浏览器打开的是一样的,但是前者是Scrapy爬虫下载的页面,后者是由浏览器下载的页面,有时它们是不同的。

在进行页面分析时,使用view命令更加可靠:

在命令提示符窗口输入
scrapy shell url
view(response)
然后就打开了Scrapy爬虫下载的页面,此时在F12开发者工具中看的路径就是原始路径。

这里我们以第一本书为例进行分析:

首先输入scrapy shell http://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html
在这里插入图片描述

运行这条命令后,scrapy shell会使用url参数构造一个Request对象,并提交给Scrapy引擎,页面下载完成后,程序进入Scrapy终端,在此环境中已经创建好了一些变量(对象和函数),我们可以在这里调试爬取代码。

状态码为200,表示请求成功:

然后输入view(response)

然后就自动打开页面了:
在这里插入图片描述

接下来使用 XPath Helper 和 F12 分析一下页面:

(XPath Helper 的安装教程在我的文章中有,辅助工具专栏)

首先是书名:
在这里插入图片描述

在Scrapy终端里测试一下:
在这里插入图片描述

extract()与extract_first()区别:
extract()返回的所有数据,存在一个list里。
extract_first()返回的是一个string,是extract()结果中第一个值。


接下来是价格:
在这里插入图片描述


然后是评价等级:
在这里插入图片描述
我们用正则表达式去除字符串中的star-rating
在这里插入图片描述


接下来是库存量:
在这里插入图片描述
我们依然使用正则表达式对库存量进行提取:
在这里插入图片描述
这里我们会发现,按照我们直接分析的XPath是提取不到内容的,我们得删去tbody标签,为什么呢?

因为浏览器本身自动为table新增了tbody标签内容,但是在xpath中是不需要的(试试看把tbody标签去掉,依然表示对应的信息),需要在进行xpath查询之时移除掉。


然后是产品编码:
在这里插入图片描述
同理,我们可以这样提取:
在这里插入图片描述


最后是评价数量:
在这里插入图片描述
同理,我们可以这样提取:
在这里插入图片描述


至此,我们已经分析完了一本书的页面,接下来我们考虑一下如何获取一个页面所有书籍的链接以及获取下一页的链接


首先我们使用fetch命令下载书籍列表页面,然后用view命令打开页面进行分析
在这里插入图片描述
经过分析,一个页面所有书籍的链接如下:
在这里插入图片描述

接下来分析下一页的

  • 13
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值