无法使用s获取完整内容

2024-04-26 17:41:57 发布

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

我在python中编写了一些选择器,用于获取一些项及其值。我想把这些东西刮得不时髦。但是,当我运行我的脚本时,它只获取项目,但无法获取那些由“br”标记分隔的项目的值。我怎么能抓住他们?我不想在这种情况下使用xpath来达到这个目的。提前谢谢。你知道吗

以下是要素:

html = '''
<div class="elems"><br>
    <ul>
    <li><b>Item Name:</b><br>
            titan
                </li>
        <li><b>Item No:</b><br>
                23003400
                    </li>
        <li><b>Item Sl:</b><br>
            2760400
                </li>
        </ul>
    </div>
'''

下面是我的脚本,其中包含css选择器:

from lxml import html as e

root = e.fromstring(html)
for items in root.cssselect(".elems li"):
    item = items.cssselect("b")[0].text_content()
    print(item)

执行后,我得到的结果是:

Item Name:
Item No:
Item Sl:

我想要的结果是:

Item Name: titan
Item No: 23003400
Item Sl: 2760400

Tags: 项目nonamebrdiv脚本html选择器
2条回答

最简单的解决方案。数值在“li”标签内,而不是“b”标签内。你知道吗

from lxml import html as e

root = e.fromstring(html)
for items in root.cssselect(".elems"):
    item = [item.text_content() for item in items.cssselect("li")]
    print(''.join(item))

通常我使用.itertext方法提取文本:

from lxml.html import fromstring

def extract_text(el, sep=' '):
    return sep.join(s.strip() for s in li.itertext() if s.strip())

tree = fromstring(html)
for li in tree.cssselect('.elems li'):
    print(extract_text(li))

相关问题 更多 >