当前位置: 首页 > 面试题库 >

HTML XPath:提取与多个标签混合的文本?

潘驰
2023-03-14
问题内容

目标:从特定元素(例如li)中提取文本,而忽略各种混合在标签中的内容,即展平第一级子级,并简单地分别返回每个展平型子级的串联文本。

例:

<div id="mw-content-text"><h2><span class="mw-headline" >CIA</span></h2>
    <ol>
    <li>Central <a href="/Intelligence_Agency.html">Intelligence Agency</a>.</li>
    <li>Culinary <a href="/Institute.html">Institute</a> of <a href="/America.html">America</a>.</li>
    </ol>

    </Div>  

所需文字:

  • Central Intelligence Agency
  • Culinary Institute of America

除了周围的定位标记阻止简单的检索。

为了分别返回每个li标签,我们使用简单的方法:

//div[contains(@id,"mw-content-text")]/ol/li

但这还包括周围的锚标签等。

//div[contains(@id,"mw-content-text")]/ol/li/text()

返回属于li的直接子元素的文本元素,即’Central’,’.’…

然后寻找自我和后代的文本元素似乎合乎逻辑

//div[contains(@id,"mw-content-text")]/ol/li[descendant-or-self::text]

但这根本没有任何回报!

有什么建议?我正在使用Python,因此可以使用其他模块进行后期处理。

(我正在使用似乎符合XPath 1.0的Scrapy HtmlXPathSelector)


问题答案:

有一个小问题:

//div[contains(@id,"mw-content-text")]/ol/li[descendant-or-self::text]

正确的表达式是:

//div[contains(@id,"mw-content-text")]/ol/li[descendant-or-self::text()]

但是,有一个更简单的表达式可以精确生成指定文本下所有文本节点的所需连接li

string(//div[contains(@id,"mw-content-text")]/ol/li)


 类似资料:
  • 问题内容: 我有这段代码: 如您所见,我仅在columnRendered为true时才渲染该outputPanel。 好吧,在某些情况下(仅用于测试以批准其应做的事情): 为true,因此应在c:if中输入,并将columnRendered切换为false。但是事实并非如此,因此columnRendered永远是正确的… 你知道为什么吗? 问题答案: JSF和JSTL不会像您期望的那样同步运行。J

  • 我正在对实际数据和来自分类器的预测数据进行多标签分类。实际数据包括三类(c1、c2和c3),同样,预测数据也包括三类(c1、c2和c3)。数据如下 在多标签分类中,文档可能属于多个类别。在上述数据中,1表示文档属于特定类,0表示文档不属于特定类。 第一行Actual\u数据表示文档属于c1类和c2类,不属于c3类。类似地,第一行predicted\u数据表示文档属于类别c1、c2和c3。 最初我使

  • 问题内容: 我想从放置在和标记中的HTML页面提取文本,因此我可以开始对该页面进行标记化,以便为每个页面构造倒排索引,以便回答搜索查询。 我如何使用jsoup 获取标签 要在该参数中写入的字符串是什么? 问题答案: 这可以做的工作 这是您可以使用的所有选择器的列表。 假设您有这个html: 要获得结果,您应该使用: 要么 假设现在您具有以下复杂的html 要从两个标签中获取值,您必须执行以下操作

  • 我试图弄清楚如何使用神经网络为多标签分类任务生成混淆矩阵。我之前设法使用函数“交集”计算准确性,因为对此我不关心任何排序。 然而,为了计算混淆矩阵,我确实关心预测/标签的索引顺序。由于标签的值始终相同(

  • 我希望从< code>div内的标题和< code >内的文本中提取文本字符串 我可以用<code>汤得到标题。h1</code>,但我想获得特定于div<code>中的<code>h1</code> 超文本标记语言:

  • 我正在y_test并y_pred混淆矩阵。我的数据用于多标签分类,因此行值是一种热编码。 我的数据有30个标签,但在输入混淆矩阵后,输出只有11行和列,这让我很困惑。我想我应该有一辆30X30的。 它们的格式是numpy数组。(y\u test和y\u pred是我使用dataframe.values将其转换为numpy数组的数据帧) y\U测试。形状 y_test y\u预测。形状 y\u预测