我无法按照 Scrapy 文档中的描述让嵌套选择器工作(http://doc.scrapy.org/en/latest/topics/selectors.html)
这是我得到的:
sel = Selector(response)
level3fields = sel.xpath('//ul/something/*')
for element in level3fields:
site = element.xpath('/span').extract()
当我在循环中打印出“元素”时,我得到< Selector xpath='stuff seen above' data="u'< span class="something">text< /span>>
现在我遇到两个问题:
首先,在元素内,还应该有一个“a”节点(如<a href
),但它不会显示在打印输出中,只有当我直接提取它时,它才会显示。这只是一个打印错误还是“元素选择器”没有保存 a 节点(不提取)
当我打印上面的“站点”时,它应该显示一个包含跨节点的列表。然而,事实并非如此,它只打印出一个空列表。
我尝试了多种更改的组合(在不同的地方有多个或没有斜杠和星号(*)),但没有一个让我更接近。
本质上,我只想获得一个嵌套选择器,它在第二步(循环)中为我提供跨节点。
有人有任何提示吗?
关于你的第一个问题,这只是一个打印“错误”。__repr__
and __str__
选择器上的方法仅打印数据的前 40 个字符(表示为 HTML/XML 或文本内容的元素)。看https://github.com/scrapy/scrapy/blob/master/scrapy/selector/unified.py#L143
在你的循环中level3fields
您应该使用相对 XPath 表达式。使用/span
会寻找span
直接在根节点下的元素,我猜这不是你想要的。
尝试这个:
sel = Selector(response)
level3fields = sel.xpath('//ul/something')
for element in level3fields:
site = element.xpath('.//span').extract()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)