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

BeautifulSoup提取ul下li内链接报ResultSet无find属性错误

错误原因

findChildren() 方法的返回值是 ResultSet 类型,本质是存储匹配到的所有标签的列表,不是单个标签对象,因此不能直接在这个返回值上调用仅单个标签支持的 find() 方法。
代码里 chapters.findChildren("ul" , recursive=False) 会返回目标div下所有直接子级ul标签组成的列表——哪怕实际DOM里只有1个ul,返回值依然是列表结构,直接调用.find('li')就会触发属性错误。
除此之外遍历逻辑还有一处问题:就算拿到了单个ul标签,直接调用.find('li')只会返回第一个匹配的li标签,不会返回所有li,也无法完成遍历需求。

修复后可运行代码
from bs4 import BeautifulSoup
import requests

html_page = requests.get('https://example.com/manga/name/')
soup = BeautifulSoup(html_page.content, 'html.parser')

# 定位章节列表容器div
chapter_container = soup.find('div', {"id": "chapter-list"})
# 获取容器下的单个ul标签
ul_tag = chapter_container.find("ul", recursive=False)

# 遍历ul下所有li标签,提取链接
for litag in ul_tag.find_all('li'):
    print(litag.find("a")["href"])

运行后输出结果:

https://example.com/manga/name/2
https://example.com/manga/name/1
避坑提示
  • BeautifulSoup里所有返回多结果的方法(包括findChildren、find_all、返回多结果的select),返回值都是ResultSet列表结构,必须遍历列表拿到单个标签后,才能调用find、find_all这类标签方法,不能直接在列表上调用。
  • 如果需要获取所有匹配的标签,必须用find_all();find()只会返回第一个匹配的单个标签,无法用于遍历全量目标元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:03:19