• Python requests关于爬虫下载下来的数据乱码问题


    1.html下载后乱码

    直接用浏览器检查原网页的编码,然后把你下载下来的网页数据设置为网页上显示的编码,result.encoding=“网页上的编码”

    2.直接获取api的json数据乱码

    最近几年网页传输出现了新的br压缩方式,在请求的时候如果你的headers里面
    Accept-Encoding是“gzip, deflate, br”,

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip, deflate, br',
        'X-Requested-With': 'XMLHttpRequest',
        'Connection': 'keep-alive',
    }

    服务器会在其中选择一种方式压缩,将数据传输回来,有的服务器会选择br方式将数据传输回来,由于现在一些库还暂时不认识br这种压缩方式,所以下载下来就会乱码,就像这样
    数据乱码解决的办法有两个:

    ①将headers中的’Accept-Encoding’属性的值修改一下

    改为’gzip’或者是‘deflate’,像这样:

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip',
        'X-Requested-With': 'XMLHttpRequest',
        'Connection': 'keep-alive',
    }

    这样返回的数据的压缩方式就使用的是gzip,数据就可以正常被解压,从而可以正常读取

    ②安装brotli库进行解压

    先安装库pip install brotli,现在我们的headers就改成这样,Accept-Encoding就只用br,因为我们要使用返回的用br压缩的数据,这里用一段代码演示

    import requests
    import brotli
    start_url = "url"
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'br',
        'X-Requested-With': 'XMLHttpRequest',
        'Connection': 'keep-alive',
    }
    r = requests.get(start_url, headers)
    content = brotli.decompress(r.content)
    content = content.decode("utf-8")
    print(content)
  • 相关阅读:
    PHP数组的升序降序函数
    overflow样式修改插件——jscrollpane
    li标签之间的空隙问题(转)
    纯CSS制作三角(转)
    图片放大插件——elevatezoom
    git常用命令笔记
    求数组子序列和最大值
    Vim快速入门
    C++求两个整数的最大公约数和最小公倍数
    实验楼-4-Linux文件权限
  • 原文地址:https://www.cnblogs.com/wukai66/p/14444100.html
Copyright © 2020-2023  润新知