You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用BeautifulSoup获取无class/id的指定ul元素下li的文本与href

如何用BeautifulSoup提取无class/id的指定<ul>下<li>的文本与href属性?

嘿,我来帮你搞定这个问题!我们可以通过两种思路精准定位目标<ul>,再提取需要的内容,具体操作如下:

步骤1:导入库并解析HTML

先把你抓取到的HTML内容转为字符串,再用BeautifulSoup完成解析:

from bs4 import BeautifulSoup

# 你抓取到的HTML内容
html_content = """<ul> <li> <b>Messages sorted by:</b> <a href="thread.html#start">[ thread ]</a> <a href="author.html#start">[ author ]</a> <a href="date.html#start">[ date ]</a> <li><b><a href="https://mail.kde.org/mailman/listinfo/okular-devel">More info on this list... </a></b></li> </li></ul>, <ul> <li><a href="000006.html">[O..."""

# 初始化BeautifulSoup解析器
soup = BeautifulSoup(html_content, 'html.parser')

步骤2:定位目标<ul>

方法一:筛选无class/id的<ul>

如果页面里只有一个不带class和id的<ul>,可以直接通过属性筛选定位:

# 找到所有没有class和id属性的<ul>,取第一个匹配项
target_ul = soup.find('ul', attrs={'class': None, 'id': None})

方法二:根据内部特征定位(更精准)

如果页面存在多个无属性的<ul>,可以通过<ul>内的特定文本(比如"Messages sorted by:")来精准锁定目标:

# 先找到包含指定文本的元素,再向上追溯其父级<ul>
target_ul = soup.find(text="Messages sorted by:").find_parent('ul')

步骤3:提取<li>的文本与href属性

定位到目标<ul>后,遍历里面的<li>标签,提取你需要的内容:

# 遍历目标<ul>下的所有<li>
for li in target_ul.find_all('li'):
    # 获取<li>的纯文本内容,strip()用于去除多余空格和换行
    li_text = li.get_text(strip=True)
    print("Li文本内容:", li_text)
    
    # 提取<li>下所有<a>标签的href属性和文本
    for a_tag in li.find_all('a'):
        link_href = a_tag.get('href')
        link_text = a_tag.get_text(strip=True)
        print(f"链接文本: {link_text}, href属性值: {link_href}")

需要注意的是,哪怕你提供的HTML存在标签闭合不规范的问题,BeautifulSoup也会自动修复结构,不影响最终解析结果。

内容的提问来源于stack exchange,提问作者xcdfv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:03:48