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

如何用Python Requests与BeautifulSoup在响应中筛选正确HTML块

如何用requests和BeautifulSoup筛选多HTML块中的目标内容?

嘿,我来帮你搞定这个问题——当你用requests请求接口后,拿到的响应里混着好几个HTML块,怎么精准挑出你需要的那部分,或者把没用的内容删掉?

先说说你遇到的情况:第一次运行脚本时,r.text里返回了一段带script的HTML,里面还有跳转导航框架的代码,这明显不是你要的核心内容对吧?下面给你几个实用的解决办法:

方法1:根据标签的唯一特征定位目标块

如果你的目标HTML块有独特的标识(比如特定的id、class,或者唯一的标签结构),直接用BeautifulSoup的查找方法精准定位就行。

举个例子,假设你要的内容在一个id为"main-content"的div里,代码可以这么写:

import requests
from bs4 import BeautifulSoup

url = my_url + "cgi/interesting.cgi"
r = requests.get(url)
soup = BeautifulSoup(r.text, "lxml")

# 精准定位目标div
target_block = soup.find("div", id="main-content")
if target_block:
    # 输出整理后的目标内容
    print(target_block.prettify())
else:
    print("没找到目标内容块哦")

方法2:直接移除不需要的元素

如果响应里的冗余内容是固定的(比如那个跳转导航的script标签,或者某个框架块),可以直接把这些没用的元素从soup里删掉。

比如针对你遇到的script和导航框架,代码可以这么写:

import requests
from bs4 import BeautifulSoup

url = my_url + "cgi/interesting.cgi"
r = requests.get(url)
soup = BeautifulSoup(r.text, "lxml")

# 移除所有script标签
for script in soup.find_all("script"):
    script.decompose()

# 移除指定的导航框架块
for frame in soup.find_all("frame", src="../cgi/navigation_frame.cgi"):
    frame.decompose()

# 输出清理后的内容
print(soup.prettify())

方法3:先截取目标HTML片段再解析

如果目标HTML块的位置比较固定,或者有明显的起始/结束特征,你可以先在原始的响应文本里截取目标片段,再传给BeautifulSoup解析。

比如假设目标内容从<div class="target-section">开始,到对应的</div>结束,代码示例:

import requests
from bs4 import BeautifulSoup

url = my_url + "cgi/interesting.cgi"
r = requests.get(url)
raw_text = r.text

# 找到目标片段的起始位置
start_mark = "<div class='target-section'>"
start_idx = raw_text.find(start_mark)
if start_idx != -1:
    # 找到对应的结束标签位置
    end_mark = "</div>"
    end_idx = raw_text.find(end_mark, start_idx) + len(end_mark)
    # 截取目标HTML
    target_html = raw_text[start_idx:end_idx]
    # 解析并输出
    soup = BeautifulSoup(target_html, "lxml")
    print(soup.prettify())
else:
    print("未找到目标片段")

小提示

在动手写代码之前,建议先把r.text打印出来,或者用浏览器的开发者工具(按F12)查看接口实际返回的内容,搞清楚目标内容的结构特征——比如有没有唯一的class、id,或者和其他块不一样的标签层级,这样筛选起来会更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:54:55