英语轻松读发新版了,欢迎下载、更新

长期运行的抓取系统,突然出现多篇内容乱码,以及实际的问题和解决

tinyfool 发布于 4周前 | 更新于 4周前
无人欣赏。

OC现在有自动的抓取技术新闻的功能,这个系统已经运行1个多月了,抓了几千条新闻。但是最近突然出现大量的内容乱码的问题。

因为OC的抓取流程是先抓取英文的新闻,然后用google 翻译来翻译成中文。所以一开始以为是google翻译出了问题,比如返回了什么错误页面,直接保存造成的错误。

但是经过检查,内容在翻译之前,英文版本的时候就已经是错误的了。

那么问题应该是抓取的时候就有的。抓取的代码是非常简单的python代码:

 headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive",
}
session = requests.Session()
try:
    response = session.get(url, headers=headers, timeout=30)
    # encoding = response.headers.get("Content-Encoding", "")

    # # 输出服务器返回的压缩类型
    # print(f"Content-Encoding: {encoding}")
    return response
except requests.exceptions.Timeout:
    print("fetchContent 请求超时")
    return None
except Exception as e:
    print("fetchContent error:", e)
    return None

这个代码按理说不应该有问题,打开注释输出了返回的压缩格式:

encoding = response.headers.get("Content-Encoding", "")

# 输出服务器返回的压缩类型
print(f"Content-Encoding: {encoding}")

发现出现乱码的都是br格式。看来我的代码不支持br的解码。那么在 Accept-Encoding 部分去掉br,一切问题就解决了。

暂无回复
登录 或者 注册