赞
踩
此处准备使用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 的安装教程在我的文章中有,辅助工具专栏)
首先是书名:
在Scrapy终端里测试一下:
extract()与extract_first()区别:
extract()返回的所有数据,存在一个list里。
extract_first()返回的是一个string,是extract()结果中第一个值。
接下来是价格:
然后是评价等级:
我们用正则表达式去除字符串中的star-rating
:
接下来是库存量:
我们依然使用正则表达式对库存量进行提取:
这里我们会发现,按照我们直接分析的XPath是提取不到内容的,我们得删去tbody标签,为什么呢?
因为浏览器本身自动为table新增了tbody标签内容,但是在xpath中是不需要的(试试看把tbody标签去掉,依然表示对应的信息),需要在进行xpath查询之时移除掉。
然后是产品编码:
同理,我们可以这样提取:
最后是评价数量:
同理,我们可以这样提取:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。