为 div class 中的字符串提取 Xpath

extract Xpath for string in a div class

我有下面的 XPath

<div class="sic_cell {symbol : 'GGRM.JK'}">
    <a href="/fundamental/factsheet.html?counter=GGRM.JK">Gudang Garam Tbk.</a>
</div>

我想从 HTML.

中提取 "GGRM.JK"
//div[contains(@class, "symbol")]

return 元素不是 "GGRM.JK"

的无文本

仅使用 xpath 获得所需替代而不进行后处理的最短方法是使用函数 substring-aftersubstring-before.

这是一个例子,如何从 class 和 href 属性中获取 'GGRM.JK'。

import lxml.html as lh

htmlText = """<div class="sic_cell {symbol : 'GGRM.JK'}">
    <a href="/fundamental/factsheet.html?counter=GGRM.JK">Gudang Garam Tbk.</a>
</div>"""

htmlDom = lh.fromstring(htmlText)

fromHref = htmlDom.xpath('substring-after(//div/a/@href, "=")')
print(fromHref)

fromClass = htmlDom.xpath('substring-before(substring-after(//div/@class, ": \'"), "\'")')
print(fromClass)

因为您似乎在使用 python,请尝试以下操作:

import lxml.html as lh
data = """[your html above]"""
doc = lh.fromstring(data)

#version 1
target = doc.xpath('//div[contains(@class, "symbol")]/@class')[0]    
print(target.split("'")[1])

#version 2
target2 = doc.xpath('//div[contains(@class, "symbol")]/a/@href')[0]
target2.split('=')[1]

无论哪种情况,输出都应该是

GGRM.JK