【问题标题】:How to select all texts within an element and its children using XPath如何使用 XPath 选择元素及其子元素中的所有文本
【发布时间】:2019-08-04 17:30:34
【问题描述】:

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

<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']

两个 span 孩子的内部文本是什么

如果我使用:

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

我会得到:

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

这是&lt;a&gt;的内部文本,不包括孩子。

如何提取整个文本?

【问题讨论】:

    标签: html xml xpath scrapy


    【解决方案1】:

    这个 XPath,

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

    将返回h2 elementstring valueid 属性值为"title"

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

    根据要求。

    【讨论】:

    • 这是获取字符串值的正确答案。如果您想选择这些文本节点,则必须使用表达式//*[@id="title"]/a//text()
    • 谢谢@Alejandro。
    【解决方案2】:
    response.xpath('xxxx').xpath('string()').extract()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 2012-05-20
      • 2021-02-23
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多