如何使用 Beautiful Soup 正确提取网页中的所有分类链接
发布时间:2025-12-31 00:00
发布者:心靈之曲
浏览次数:本文详解为何 `find_all(class_="side_categories")` 返回单个 `
` 而非预期的链接列表,并提供两种可靠方法(css 选择器与嵌套 `find`/`find_all`)精准定位并提取图书网站的所有分类 url。当你调用 soup.find_all(class_="side_categories") 时,Beautiful Soup 确实返回了一个 ResultSet(本质是类列表对象),但它只包含一个匹配的 元素——因为整个页面中该 class 仅出现一次。这个 是分类导航的容器,而非你要的每个分类链接本身。因此你看到的是一个包裹了完整嵌套 HTML 的单元素列表,而非可直接遍历的 标签集合。 要获取所有分类链接(即 标签),需进一步在该容器内查找目标元素。以下是两种推荐做法: 通过以上任一方法,你将获得真正的可迭代链接列表,轻松完成后续数据采集任务。核心原则是:先定位容器,再聚焦目标;避免对容器本身调用 find_all,而应在容✅ 方法一:使用 CSS 选择器(推荐,简洁高效)
from bs4 import BeautifulSoup
import requests
url = "http://books.toscrape.com/"
page = requests.get(url)
soup = BeautifulSoup(page.text, "html.parser")
# 直接定位所有位于 .side_categories 内的 标签(层级更精确)
for link in soup.select('.side_categories li a'):
href = link.get('href')
if href: # 防止 None 值
full_url = url.rstrip('/') + '/' + href.lstrip('/')
print(full_url)✅ 方法二:链式查找(语义清晰,易理解)
# 先找到容器,再在其内部查找所有 标签
side_nav = soup.find(class_='side_categories')
if side_nav:
for link in side_nav.find_all('a'):
href = link.get('href')
if href:
full_url = url.rstrip('/') + '/' + href.lstrip('/')
print(full_url)⚠️ 注意事项:find() 返回单个 Tag 对象(或 None),而 find_all() 返回 ResultSet(可迭代);使用 select() 或 find_all() 时,务必确认选择器路径是否准确(如 .side_categories li a 表示“class 为 side_categories 的元素下的所有 li 中的 a”);处理 href 时建议做空值检查(link.get('href') 可能为 None),并规范化 URL 拼接(避免双斜杠 //);若需提取分类名称(如 “Travel”, “Mystery”),可用 link.get_text(strip=True) 替代 link.get('href')。
器内查找子元素。
# 而非
# 当你
# 遍历
# 则是
# 你要
# 迭代
# 的是
# 链式
# 两种
# css
# li
# 选择器
# href
# 对象
# class
# select
# go
# html
相关文章:
B站账号登录入口 哔哩哔哩官网网页版平台
Linux系统巡检体系建设教程_自动化巡检落地方案
2026换新机认准“骁龙8”!这份国补购机指南快收好
c++中的constexpr if是什么_c++编译期分支逻辑【C++17】
沃尔沃XC70这车怎么样?不吹不黑聊聊用车体验
键盘按键错乱怎么办 电脑键盘输入修复方法【教程】
JavaScript中的标签模板是什么_它如何扩展字符串功能
旅游包车小程序制作,打造高效便捷出行!
HTML透明颜色代码怎么用HSL调蓝色透明_HSL蓝色透明值设置详解【说明】
如何使用Golang写入文件数据_通过os和bufio写入文本和二进制
Python并发异常传播_错误处理解析【教程】
如何使用Yandex进行市场调研 Yandex关键词工具外贸版入口
KivyMD Snackbar文本属性缺失问题的解决方案
苏州:推广人工智能应用场景,对获国家支持的示范项目最高奖励 1000 万元
sublime怎么实现代码实时统计行数_sublime安装Counter插件显示行数【技巧】
Python并发异常处理策略_隔离恢复解析【教程】
179 级副本速通秘籍:打造不败阵容,掌握战场决胜法则
米侠浏览器网页显示乱码怎么办 米侠编码修复
快手官方网站登录入口 快手网页版官方入口
HTML5图片怎么保存_HTML5用canvas toDataURL或下载属性保存图片【保存】
goog谷歌浏览器下载官方正版_谷歌Chrome官方正版下载指南
LinuxShell函数封装方法_脚本复用设计思路【教程】
c++如何实现简单的DNS域名解析_c++ getaddrinfo函数与IP地址转换【方法】
Safari浏览器页面刷新异常怎么办 Safari刷新修复
哔哩哔哩官网入口 B站网页版官方入口
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
DeepSeek写合同怎么用_DeepSeek写合同使用方法详细指南【教程】
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
本地家政小程序,获客难怎么解决?
Windows如何查看和管理已安装的字体?(字体文件夹)
相关栏目:
【
行业资讯17850 】
【
软件资源51899 】
【
网站技术89748 】
【
百度推广44206 】
【
网络营销84187 】
【
运营推广93002 】
【
AI优化91086 】
【
网络优化117696 】
【
网址导航107142 】






