使用BeautifulSoup提取值列表

2024-03-29 02:37:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试使用Ubuntu的RSS feed自动解析其安全声明。我使用的是feedparser,所以工作正常。我能拿到冠军(订阅源标题)的咨询,相关链接(源.link)等等。在

我现在要做的是进一步解析这个输出,以便获取受影响的版本并将其存储以供进一步参考。在

为了获取提要并准备好解析,下面的代码起作用。它还使用beauthoulsoup进行解析提要摘要它似乎是“占位符”,其中包含了我要找的信息。在

import feedparser
from bs4 import BeautifulSoup

ubuntu_url = 'https://usn.ubuntu.com/rss.xml'

feed = feedparser.parse(ubuntu_url)

for post in feed.entries:
    soup = BeautifulSoup(post.summary, 'html.parser')

如果我添加一个'print(soup.prettify())',我可以在这个部分看到我想要的信息(这是一个更大的输出的一部分,还有几个其他列表元素):

^{pr2}$

当然,这份名单的长度会有所不同,从一个版本到更高版本。正如这个不同的例子所示:

<p>A security issue affects these releases of Ubuntu and its derivatives:</p>

<ul>
<li>Ubuntu 18.04 LTS</li>
</ul>

我一直在试图找出如何使用beauthoulsoup来解析它,并且只在“A security issue impacts thes releases of Ubuntu及其派生版本:”标题后获取“<ul> </ul>”部分中的条目。在

我已经查阅了文档,以了解正确使用“find_all”功能的方法,但在现阶段还没有设法将谜题拼凑起来。在

有什么想法吗?在

提前谢谢。在


Tags: import版本信息url标题ubuntufeedul
1条回答
网友
1楼 · 发布于 2024-03-29 02:37:22

使用段落文本

演示:

from bs4 import BeautifulSoup
s = """<p>A security issue affects these releases of Ubuntu and its derivatives:</p>
<ul>
<li>Ubuntu 18.04 LTS</li>
<li>Ubuntu 17.10</li>
<li>Ubuntu 16.04 LTS</li>
<li>Ubuntu 14.04 LTS</li>
</ul>"""

soup = BeautifulSoup(s, "html.parser")
p_tag = soup.find("p", text="A security issue affects these releases of Ubuntu and its derivatives:")
for li in p_tag.find_next_siblings("ul")[0].find_all("li"):
    print(li.text)

输出:

^{pr2}$

相关问题 更多 >