【问题标题】:Python simplify HTML tablePython简化HTML表格
【发布时间】:2016-05-12 10:20:20
【问题描述】:

是否有简化 HTML 表格的好方法(例如使用 BeautifulSoup)。我正在使用请求来获取表格并使用 BeautifulSoup 提取表格,但我需要表格来自:

<table>
    <thead></thead>
    <tbody>
        <tr>
            <td><a id="bar">Some text<br></br><span class="foobar">foo </span><small class="foo">bar!</small></a></td>
        </tr>
    </tbody>
</table>

到:

<table>
    <thead></thead>
    <tbody>
        <tr>
            <td>Some text\nfoo bar!</td>
        </tr>
    </tbody>
</table>

通过一种简单的方式,那么我在考虑不必去每个标签并使用 soup.get_text()。

【问题讨论】:

  • 为什么&lt;br&gt;&lt;br/&gt; 只产生一个\n?
  • 应该是
    ,抱歉。我知道它可能是
    。但这些是我正在使用的数据。

标签: python html beautifulsoup python-requests


【解决方案1】:

您可以将 br 替换为换行符:

h = """<table>
    <thead></thead>
        <tr>
            <td><a id="bar">Some text<br><br/><span class="foobar">foo </span><small class="foo">bar!</small></a></td>
        </tr>
</table>"""


from bs4 import BeautifulSoup

soup = BeautifulSoup(h)

td = soup.select_one("#bar")
td.br.replace_with("\n") 

td.replace_with(td.text)


print(repr(soup))

这给了你:

<html><body><table>\n<thead></thead>\n<tr>\n<td>Some text\nfoo bar!</td>\n</tr>\n</table></body></html>

【讨论】:

  • @RadLexus,我不确定follow,重点是换表?
  • 对不起 - OPs 的目标只是为了获得一个不被标签破坏的文本。我以为剩下的 HTML 仍然会被这样使用,但似乎没关系。
  • @RadLexus,别担心,我想也许我错过了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 2014-02-27
  • 2019-02-10
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多