我是使用XPath的新手(而且我一般是Python的相对初学者)。我正在尝试通过它从Wikipedia页面的第一段中删除文本。
以Python页面(https://en.wikipedia.org/wiki/Python_(programming_language))
为例如果我将其放入变量
page = requests.get("https://en.wikipedia.org/wiki/Python_(programming_language)")
tree = html.fromstring(page.content)
那我知道所需的段落在XPath /html/body/div[3]/div[3]/div[4]/div/p[1]
所以我将文本带入一个变量
first = tree.xpath("/html/body/div[3]/div[3]/div[4]/div/p[1]/text()")
此输出结果
[' is an ', ' ', ' for ', '. Created by ', ' and first released in 1991, Python has a design philosophy that emphasizes ', ', notably using ', '. It provides constructs that enable clear programming on both small and large scales.', '\n']
如您所见,我缺少Web链接中的单词/句子。
答案 0 :(得分:0)
链接本身就是您需要下降的节点。
/html/body/div[3]/div[3]/div[4]/div/p[1]//text()
答案 1 :(得分:0)
您的XPath查询仅与该节点的文本子节点匹配。嵌入的文本存在于另一个节点上,因此被排除在外。
要下降,请按照建议使用//text()
;这将从相关节点开始检索任何降序节点的文本值。
/html/body/div[3]/div[3]/div[4]/div/p[1]//text()
或者,您可以选择有问题的节点本身,然后使用解析器方法text_content()
来检索文本,以检索包括所有子节点的文本。
lxml import html
import requests
page = requests.get('https://en.wikipedia.org/wiki/Python_(programming_language)')
tree = html.fromstring(page.content)
firstp = tree.xpath('/html/body/div[3]/div[3]/div[4]/div/p[1]')
firstp[0].text_content()