• 爬虫 — 内容乱码与证书不信任网站


    一、内容乱码

    如果出现乱码设置编码编码格式跟网页源码当中 charset 的编码是一样的。

    # 需求:爬取表情包网站源码:https://qq.yh31.com/zjbq/2920180.html
    
    # 导入模块
    import requests
    
    # 确定 url
    url = 'https://qq.yh31.com/zjbq/2920180.html'
    
    # 请求头
    head = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'
    }
    
    # 开始请求
    html = requests.get(url, headers=head)
    
    # 出现乱码 去源码当中找 charset
    html.encoding = 'utf-8'  # 如果源码中是 gbk,就写 gbk
    
    # 打印数据
    print(html.text) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    二、处理不信任的证书

    SSL 证书遵守了 SSL 协议,在应用层。是由信任的数字证书颁发机构验证身份之后颁发的证书,同时具有服务器身份验证和数据传输加密功能。

    一般由专门的机构颁发的,也有的网站不希望别人爬取,会自己制作证书的,但是这种情况下,一般用户访问时需要手动安装证书。

    # 导入模块
    import requests
    
    # 确定 url
    url = 'https://inv-veri.chinatax.gov.cn/'
    
    # 请求头
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'
    }
    
    # 正常情况下,requests 发请求 —— 会主动检测证书
    # 发请求的时候,不检测这个 ssl 证书 verify=False
    res = requests.get(url, headers=headers, verify=False)
    
    # 设置编码
    res.encoding = 'utf-8'
    
    # 打印数据
    print(res.text)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~

  • 相关阅读:
    Python - 字符串编解码
    JVM第三话 -- JVM性能调优实战和高频面试题记录
    git的基本使用1
    【Machine Learning】03-Unsupervised learning
    ChatGLM3-6B安装
    Java对接(BSC)币安链 | BNB与BEP20的开发实践(二)BNB转账、BEP20转账、链上交易监控
    galeracluster高可用集群安装(mysql)
    UDP的可靠性传输
    【Qt】.ui文件转.h文件
    Scss
  • 原文地址:https://blog.csdn.net/muyuhen/article/details/132819828