我很难让嵌套选择器像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()
当我在循环中打印出“element”时,我得到< Selector xpath='stuff seen above' data="u'< span class="something">text< /span>>
现在我有两个问题:
首先,在元素中,还应该有一个“a”节点(如<a href
),但它不会出现在打印输出中,只有当我直接提取它时,它才会出现。这是打印错误还是“元素选择器”没有保留a节点(不提取)
当我打印出上面的“site”时,它应该显示一个包含span节点的列表。但是,它没有,它只打印出一个空列表。
我尝试了一系列的改变(在不同的地方多个到没有斜杠和星号(*),但是没有一个能让我更接近。在
本质上,我只想得到一个嵌套选择器,它在第二步(循环)中为我提供span节点。在
有人给我小费吗?在
关于你的第一个问题,这只是一个印刷错误。^选择器上的{}和
__str__
方法只打印数据的前40个字符(元素表示为HTML/XML或文本内容)。见https://github.com/scrapy/scrapy/blob/master/scrapy/selector/unified.py#L143在
level3fields
上的循环中,应该使用相对XPath表达式。使用/span
将直接在根节点下查找span
元素,我猜这不是您想要的。在试试这个:
相关问题 更多 >
编程相关推荐