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

使用requests+justext提取网页内容遇gzip解码错误求助

问题根因

报错requests.exceptions.ContentDecodingError来自两个核心原因:

  • 目标站点yoursoccerhome.com服务端配置异常,响应头声明内容使用gzip压缩,但实际返回的内容不符合gzip格式规范,requests默认触发自动解压逻辑时就会报头校验失败
  • 站点配置了基础反爬规则,识别到requests默认的爬虫标识User-Agent后,故意返回损坏的响应拦截请求,你换另一个域名能正常运行,就是因为对应站点没有这类拦截策略。
修复方案

两步调整就能解决:

  1. 给请求加上普通浏览器的请求头,绕过基础反爬识别
  2. 直接获取原始响应字节传给justext即可,justext本身支持解析原始响应内容。

修正后的可运行代码如下:

import requests
import justext

# 模拟普通浏览器的请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}

url = 'https://yoursoccerhome.com/what-is-a-cap-in-soccer-the-meaning-and-history-of-the-term/'
response = requests.get(url, headers=headers)
raw_content = response.content

paragraphs = justext.justext(raw_content, justext.get_stoplist("English"))
for paragraph in paragraphs:
    if not paragraph.is_boilerplate:
        print(paragraph.text)

注意:你原代码里存在缩进错误,if not paragraph.is_boilerplate:判断下的print语句需要缩进4个空格,否则运行时会抛出语法错误。

如果调整后仍然碰到解压报错,可以直接在headers里加一行配置,强制要求服务器返回未压缩的明文内容,彻底绕开解压逻辑:

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
    "Accept-Encoding": "identity"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:51:30