html - 当 HTML 文本跨多行时,如何在 beautifulsoup4 中返回格式良好的文本

标签 html regex beautifulsoup python-3.6

我正在尝试使用 python 的 beautifulsoup4 包提取地址。文本所在的 HTML block 如下所示:

<address>
        183 Main St<br>East Copper<br>Massachusetts<br>U S A<br>
        MA 01516-113
    </address>

我可以使用 find 和 text.strip() 方法获取地址,并将\n 和\r 替换为空,但我会回来:

'183 Main StEast CopperMassachusettsU S A        MA 01516-113'

这对于我的目的来说可能没问题,但好奇心让我想了解如何清理它。

我做了大量的修改和研究,以找出如何让它返回格式良好的地址。我的意思是,这一切都在一行上(就像目前的情况一样),没有额外的空格,并且空格应该位于“Copper”和“Massachusetts”之类的内容之间。

我是否错误地认为正则表达式/代码可以提供帮助?我应该迭代 <br>标签并单独抓取每一行,然后将字符串与 + 组合起来和空格?

非常感谢任何帮助。

最佳答案

在这种情况下,理想的方法如下所示:

from bs4 import BeautifulSoup

content="""
<address>
        183 Main St<br>East Copper<br>Massachusetts<br>U S A<br>
        MA 01516-113
    </address>
"""
soup = BeautifulSoup(content,"lxml")
item = soup.find("address").get_text(" ",strip=True)
print(item)

输出:

183 Main St East Copper Massachusetts U S A MA 01516-113

关于html - 当 HTML 文本跨多行时,如何在 beautifulsoup4 中返回格式良好的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48913975/

相关文章:

python - 使用 BeautifulSoup 从单个博客存档页面提取多个帖子,无需脚本

javascript - 在内容 Pane 中以 html 加载 javascript

javascript - Angular 中的正则表达式通配符

c++ - 在 MacOS 上 boost 正则表达式构建失败

python-3.x - 如何从网页的图形中提取数据?

python - 如何用 BeautifulSoup 解析这个 HTML 代码?

javascript - 滚轮仅滚动子内容而不滚动正文

html - CSS 属性 'max-width' 使图像在 Internet Explorer 8 中崩溃

regex - 正则表达式在开始或结束时没有空格,但允许中间有空格,空和任何 6-20 个字符?