用到的就这么几个知识,少之又少,不要想着除了这些还有神马冰上之下,绝对木有,请放心,如果真的有,我会再末尾给诸君写一些例子,依葫芦画瓢就行,那接下来就开始装13;
一、scrapy xpath 属性提取这里先给大家列出xpath的选择器类型,如下表:XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式:
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
. | 选取当前节点。 |
.. | 选取当前节点的父节点。 |
@ | 选取属性。 |
上面神马意思或许你还不清楚,没关系,1+1为神马等于2我们也无法证明,会用即可;可以看到上面选取属性用的是:@符号,那我们还是来试试提取最常见的属性:href、src,首先我们试着来提取href,还是用:http://lab.scrapy.cn开刀,就提取首页分页的href,如下图:
调试的话我们还是在命令行使用下面命令:
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/王