小能豆

scrapy xpath 选择器在 h1-h6 标签上的行为

py

为什么以下两个代码片段会给出不同的输出?它们之间的唯一区别是h1第一种情况下的标签被h第二种情况下的标签替换。这是因为h1标签在 html 中具有特殊的“含义”吗?我尝试使用h1through h6,它们都给出[]了输出,而使用h7it 开始给出[u'xxx']输出。

from scrapy import Selector # scrapy version: 1.2.2

text = '<h1><p>xxx</p></h1>'
print Selector(text=text).xpath('//h1/p/text()').extract()
Output[1]: []

text = '<h><p>xxx</p></h>'
print Selector(text=text).xpath('//h/p/text()').extract()
Output[2]: [u'xxx']

阅读 16

收藏
2024-12-12

共1个答案

小能豆

根据 W3C,在里面添加p标签是无效的。

无论如何,为了绕过这个问题并且只使用任何xml结构,您只需像type这样更改:

sel = Selector(text="anyxml", type="xml")

这将尊重任何 xml 结构。

2024-12-12