python-3.x - 如何从多个 HTML 标签中检索文本数据?
问题描述
我将以下 HTML 片段输出存储在名为content
type的变量中bs4.element.Tag
。
<li class="item">
Alpha-tocopherol
<em>see</em>
<a href="https://medlineplus.gov/vitamine.html">Vitamin E</a>
</li>
str(content)
输出:
'<li class="item">\n Alpha-tocopherol\n <em>see</em>\n<a href="https://medlineplus.gov/vitamine.html">Vitamin E</a>\n</li>'
我想使用 Python 作为输出:['Alpha-tocopherol', 'Vitamin E']
. 我尝试了以下方法,但它是错误的:
regex = re.compile('(\w+\s+)\n')
regex.sub('', content.text).split()
解决方案
您可以通过使用方法获取第一个标签.contents
,然后使用该.find_next()
方法搜索a
标签。
from bs4 import BeautifulSoup
html = """
<li class="item">
Alpha-tocopherol
<em>see</em>
<a href="https://medlineplus.gov/vitamine.html">Vitamin E</a>
</li>
"""
soup = BeautifulSoup(html, "html.parser")
for tag in soup.find_all("li", class_="item"):
print([tag.contents[0].strip(), tag.find_next("a").text])
输出:
['Alpha-tocopherol', 'Vitamin E']
推荐阅读
- git - 从远程 GitHub 存储库替代 git lfs clone 的更快?
- google-cloud-firestore - Firestore 中的交易与 FieldValue.increment(1)?
- android - 滑入对话框片段
- excel - 如何在excel中为相同的数据创建两个水平轴标签?
- haskell - 如何测试 GHC 插件?
- python - 在 python 中,有没有比这更好的方法来处理跨平台斜线?
- javascript - 我一直在尝试将来自两个不同输入的数字修复为两个数组的数组,使其看起来像这样 ["[13, 4]", "[1, 2, 3, 6, 14]"]
- hibernate - 休眠多个表的单个外键
- oracle - 如何使用 SET 运算符从 oracle 集合中查找不区分大小写的重复项
- java - 为什么 switch-case 部分和运行时多态性不起作用?