【问题标题】:lxml - ignore <br> tag in htmllxml - 忽略 html 中的 <br> 标签
【发布时间】:2013-02-15 05:42:53
【问题描述】:

我使用 lxml 在 Python 中编写了一个小型 html 解析器。很有用,不过我有个问题。

我有以下代码:

tags = doc.xpath('//table//tr/td[@align="right"]/b')
for tag in tags:
    print(x.text.strip())

它工作正常。但如果&lt;b&gt; 元素内有&lt;br&gt; 标签,像这样:

<b> first-half <br>
    second-half </b>

此代码只会将first-half 打印到&lt;b&gt; 标记中。

即使有&lt;br&gt; 标签,我如何才能获取&lt;b&gt; 中的所有文本?

谢谢。

【问题讨论】:

  • 这是格式错误的 HTML。您是否尝试过获取该标签的子标签的文本?
  • 您是将其解析为 XML 还是 HTML?
  • 试试x.text_content()。它应该能够过滤掉中断。
  • @Anorov,谢谢,真的很管用!
  • @shau-kote,我遇到了同样的问题。我能够用text_content() 解决它,但现在它加入了字符串。所以在你的例子中,它会产生first-halfsecond-half。你是怎么解决这个问题的?

标签: python html-parsing lxml


【解决方案1】:

使用text_content() 提取标签中的所有非标记文本。将x.text 替换为x.text_content()

【讨论】:

    猜你喜欢
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2021-12-26
    • 2012-01-01
    • 1970-01-01
    • 2013-05-16
    相关资源
    最近更新 更多