python - 根据 python 上的特定标签将 HTML 字符串拆分为多个部分

标签 python html parsing sections

我对Python还很陌生。我在论坛上呆了几天,我的问题的答案已经存在,但针对的是 javascript。

我有一个包含新闻的 html 页面,我希望只要有 H4 标签,内容就会被解析到新的部分中。我想根据字符串的内容命名该部分,然后将这些部分调用到单独的电子邮件中(但这是稍后的事)。 我似乎不知道如何创建这些部分。下面是代码的样子。如果我的问题很初级,我们非常感谢任何建议。谢谢!

'<td><h3>Andean</h3><hr/></td>
</tr><tr>
    <td><h4>Bolivia bla bla</h4></td>
</tr>             
<tr>
    <td><p>* Bolivia&bla bla text text </p></td>
</tr><tr>
    <td><h3>Brazil</h3><hr/></td>
</tr><tr>
    <td><h4>BRAZIL: bla bla</h4></td>
</tr>             
<tr>'

最佳答案

您可以使用正则表达式“手动”执行此操作 ( https://en.wikipedia.org/wiki/Regular_expression ),也可以使用专门用于解析 HTML 的库 ( https://pypi.org/project/beautifulsoup4/ )。如果您计划进行更多 HTML 解析,我建议使用专用库。如果您不熟悉的话,两者都需要一些时间来适应,但是两者都值得学习。

import re
from bs4 import BeautifulSoup

html_code = """<td><h3>Andean</h3><hr/></td>
</tr><tr>
    <td><h4>Bolivia bla bla</h4></td>
</tr>             
<tr>
    <td><p>* Bolivia&bla bla text text </p></td>
</tr><tr>
    <td><h3>Brazil</h3><hr/></td>
</tr><tr>
    <td><h4>BRAZIL: bla bla</h4></td>
</tr>             
<tr>"""

print('* with regex:')
print(re.findall('<h4>(.*?)</h4>', html_code))

print('* with beautiful soup:')
soup = BeautifulSoup(html_code)
tmp = soup.find_all('h4')
for val in tmp:
    print(val.contents)

将输出

* with regex:
['Bolivia bla bla', 'BRAZIL: bla bla']
* with beautiful soup:
['Bolivia bla bla']
['BRAZIL: bla bla']

关于python - 根据 python 上的特定标签将 HTML 字符串拆分为多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58168578/

相关文章:

python - count() 的奇怪执行时间

python - __getitem__ 空元组参数

python - 未找到名为 vpc-xxxxxx-vpc-id 的导出。用户请求回滚

php - 获取个人记录并自动写入的更简单方法

iphone - 从 parse.com 检索图像

python - 如何告诉 tox 使用 PyPI 镜像来安装包?

javascript - iOS 网络应用程序 : Rotate the body with the orientation change

javascript - 在 Edge 中删除/编辑范围 onclick 文本

java - 类似于日期解析器的可配置字符串解析器

android - 如何可靠地从 AttributeSet 中获取颜色?