解析 wiki 样式的网页,XPath 错误

Parsing a wiki-styled web page, XPath error

我是 XPath 的新手,我完全无法用 lxml 解析一个简单的 wiki 风格的网页。

我有以下表达式:

"".join(tree.xpath('//*[@id="mw-content-text"]/div[1]/p//text()'))

它工作正常,但我需要排除 class 为 "reference" 的子项,并使用以下表达式获得 lxml.etree.XPathEvalError:

"".join(tree.xpath('//*[@id="mw-content-text"]/div[1]/p//*[not(@class="reference")].text()'))

正确的 XPath 表达式是什么?提前致谢:)

可能是由于 .text() 而不是 /text() 而发生错误。

如果你还想包含 p 元素的文本,那么你必须使用 descendant-or-self XPath axis:

//*[@id="mw-content-text"]/div[1]/p/descendant-or-self::*[not(@class="reference")]/text()