Python Selenium如何提取elemen之后的文本

2024-09-27 00:19:27 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我试图从中提取文本的HTML代码

<fieldset>
    <div class="grid-3-12 form-no-lbl">
            <label class="form-lbl">CNPJ:</label>011234560083
    </div>
    <div class="grid-3-12 form-no-lbl">
            <label class="form-lbl">CIDADE:</label>TAUBATE
    </div>
    <div class="grid-3-12 form-no-lbl">
            <label class="form-lbl">ESTADO:</label>SP
    </div>
    <div class="grid-3-12 form-no-lbl">
            <label class="form-lbl">TOTAL BRUTO: </label>2.407,09
    </div>
    <div class="grid-3-12 form-no-lbl">
            <label class="form-lbl">LIQ: </label>2.344,09
    </div>
</fieldset>

这个代码

^{pr2}$

只返回第一个元素:011234560083

我想读取每个标签的值,比如“LIQ:”=2.344,09


Tags: no代码文本divformhtmllabelclass
3条回答

这是硒中一个相当普遍的问题。只是因为不能用find_element_by_*命令直接匹配文本节点。

在您的例子中,我假设您事先知道LIQESTADO等标签,并且需要通过该标签获得一个值。在

其思想是通过文本定位label,在树上移动到父级,获取文本,按:拆分,并得到与所需值相对应的最后一个元素:

label = "ESTADO"
text = driver.find_element_by_xpath("//label[starts-with(., '%s:')]/.." % label).text
print(text.split(":")[-1].strip())

如果您可以同时使用selenium和{},那么可以使用selenium导航到所需的页面,然后使用lxml来解析HTML。例如

import lxml.html as LH
# content = browser.page_source
content = '''\
<fieldset>
    <div class="grid-3-12 form-no-lbl">
            <label class="form-lbl">CNPJ:</label>011234560083
    </div>
    <div class="grid-3-12 form-no-lbl">
            <label class="form-lbl">CIDADE:</label>TAUBATE
    </div>
    <div class="grid-3-12 form-no-lbl">
            <label class="form-lbl">ESTADO:</label>SP
    </div>
    <div class="grid-3-12 form-no-lbl">
            <label class="form-lbl">TOTAL BRUTO: </label>2.407,09
    </div>
    <div class="grid-3-12 form-no-lbl">
            <label class="form-lbl">LIQ: </label>2.344,09
    </div>
</fieldset>'''

root = LH.fromstring(content)
labels = root.xpath('//fieldset/div[@class="grid-3-12 form-no-lbl"]/label')
data = [[item.strip() for item in [elt.text, elt.tail]] for elt in labels]

收益率

^{pr2}$

你的代码不工作似乎真的很奇怪。我还没碰到过这样的案子。我认为下面的代码应该有效。基本上,我获取LABEL中的文本,并将其添加到您已经找到的文本中。这个组合应该可以得到你要找的文本。在

lines = browse.find_elements_by_css_selector("div.grid-3-12.form-no-lbl")
for line in lines
    print line.find_element_by_css_selector("label.form-lbl").text + line.text

相关问题 更多 >

    热门问题