首页 > 解决方案 > 如何使用 XPath 选择元素及其子元素中的所有文本

问题描述

我想在使用XPATH的scrapy中提取以下标题的文本:

<h2 id="title"><a href="https://www.aclweb.org/anthology/P17-1102"><span class="acl-fixed-case">P</span>osition<span class="acl-fixed-case">R</span>ank: An Unsupervised Approach to Keyphrase Extraction from Scholarly Documents</a></h2>

如果我使用:

paper_title = response.xpath('//*[@id="title"]/a/descendant::*/text()').extract()

我会得到:

['P', 'R']

哪些是两个跨度孩子的内部文本

如果我使用:

paper_title = response.xpath('//*[@id="title"]/a/text()').extract()

我会得到:

['osition',
 'ank: An Unsupervised Approach to Keyphrase Extraction from Scholarly Documents']

<a>这就是排除孩子的内在文字。

如何提取整个文本?

标签: htmlxmlxpathscrapy

解决方案


这个 XPath,

string(//h2[@id="title"])

将返回属性值为的元素字符串值h2 id"title"

PositionRank:一种从学术文献中提取关键词的无监督方法

按照要求。


推荐阅读