我对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']
我是一名优秀的程序员,十分优秀!