如何用BeautifulSoup实现标题标签的缩进输出?
实现标题层级缩进输出的修改方案
核心思路
根据标题标签的级别(H1/H2/H3...)添加对应数量的缩进:H1不缩进,H2加3个空格,H3加6个空格,以此类推,匹配你需要的层级格式。
修改后的代码
from bs4 import BeautifulSoup import requests # 补充网页请求逻辑(原代码缺失website变量定义) url = "你的目标网页地址" website = requests.get(url) soup = BeautifulSoup(website.content, 'html.parser') # 可按需扩展要抓取的标题标签范围,这里包含H1-H3 tags = soup.find_all(['h1', 'h2', 'h3']) for tag in tags: # 提取标题级别(如h1对应1,h2对应2) level = int(tag.name[1]) # 计算对应缩进量 indent = " " * (level - 1) # 输出缩进后的标题文本,处理标签内有子元素的情况 print(f"{indent}{tag.get_text(strip=True)}")
关键细节说明
- 用
tag.get_text(strip=True)替代tag.string:避免标签内包含其他元素时返回None的问题,同时自动去除文本前后的空白字符。 - 缩进逻辑:通过标签名提取级别数字,用
(level-1)*3个空格实现层级区分,完全匹配你给出的示例格式。 - 网页请求补充:原代码未定义
website变量,新增了requests.get(url)的逻辑,记得替换成你实际要爬取的网址。
内容的提问来源于stack exchange,提问作者Outbound
相关产品推荐
相关产品推荐

