scrapy提取数据之:xpath选择器_Scrapy1.5中文文档_Scrapy 中文网

又是long time no see,想我了没?上面说了第一种scrapy提取数据的方式:css选择器;虽然一招半式足以称霸江湖,但这里老夫还想再传授诸位一招:xpath提取!好好学,技多不压身。还是从几个方面说:一、属性提取;二、内容提取;三、标签内包含标签又包含标签的最外层标签里的所有内容提取;会了这些基本也就会了,反正scrapy

用到的就这么几个知识,少之又少,不要想着除了这些还有神马冰上之下,绝对木有,请放心,如果真的有,我会再末尾给诸君写一些例子,依葫芦画瓢就行,那接下来就开始装13;

一、scrapy xpath 属性提取
这里先给大家列出xpath的选择器类型,如下表:XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式:
表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。

上面神马意思或许你还不清楚,没关系,1+1为神马等于2我们也无法证明,会用即可;可以看到上面选取属性用的是:@符号,那我们还是来试试提取最常见的属性:href、src,首先我们试着来提取href,还是用:http://lab.scrapy.cn开刀,就提取首页分页的href,如下图:
scrapy提取数据之:xpath选择器_Scrapy1.5中文文档_Scrapy 中文网
调试的话我们还是在命令行使用下面命令:

scrapy shell lab.scrapyd.cn

这样的话就能成功打开lab.scrapyd.cn这个页面,那我们要如何使用xpath表达式呢?用到了这么一个函数:response.xpath("表达式"),提取属性的话既然使用:@,那我们要提取href就是:@href,试一下:

In [1]: response.xpath("@href")
Out[1]: []

可以看到神马都木有,why?因为我们木有限定从哪里提取,一般我们都需要加个://,再来试试

In [2]: response.xpath("//@href")
Out[2]:
[<Selector xpath='//@href' data='//cdnjscn.b0.upaiyun.com/libs/normalize/'>,
 <Selector xpath='//@href' data='http://lab.scrapyd.cn/usr/themes/default'>,
 ……
 <Selector xpath='//@href' data='http://lab.scrapyd.cn/tag/王
上一篇:网络操作系统VyOS安装与初步使用


下一篇:Table is marked as crashed and should be repaire (