Python自动检测requests所获得html文档的编码

使用chardet库自动检测requests所获得html文档的编码

使用requests和BeautifulSoup库获取某个页面带来的乱码问题

使用requests配合BeautifulSoup库,可以轻松地从网页中提取数据。但是,当网页返回的编码格式与Python默认的编码格式不一致时,就会导致乱码问题。

以如下代码为例,它会获取到一段乱码的html:

import requests
from bs4 import BeautifulSoup

# 目标 URL
url = 'https://finance.sina.com.cn/realstock/company/sh600050/nc.shtml'

# 发送 HTTP GET 请求
response = requests.get(url)

# 检查请求是否成功
if response.status_code == 200:

    # 获取网页内容
    html_content = response.text
    
    # 使用 BeautifulSoup 解析 HTML 内容
    soup = BeautifulSoup(html_content, 'html.parser')
    
    # 要查找的 ID
    target_id = 'hqDetails'
    
    # 查找具有特定 ID 的标签
    element = soup.find(id=target_id)
    
    if element:
        # 获取该标签下的 HTML 内容
        element_html = str(element)
        print(f"ID 为 {target_id} 的 HTML 内容:\n{element_html}\n")
        
        # 查找该标签下的所有 table 元素
        tables = element.find_all('table')
        
        if tables:
            for i, table in enumerate(tables):
                print(f"第 {i+1} 个 table 的 HTML 内容:\n{table}\n")
        else:
            print(f"ID 为 {target_id} 的标签下没有 table 元素")
    else:
        print(f"未找到 ID 为 {target_id} 的标签")
else:
    print(f"请求失败,状态码: {response.status_code}")

Python自动检测requests所获得html文档的编码

我们可以通过通过手工指定代码的方式来解决这个问题,例如在response.status_code == 200后,通过response.encoding = 'utf-8'指定代码,又或通过soup = BeautifulSoup(html_content, 'html.parser', from_encoding='utf-8') 来指定编码。

然而,当我们获取的html页面编码不确定的时候,有没有更好的办法让编码监测自动执行呢?这时候chardet编码监测库是一个很好的帮手。

使用 chardet 库自动检测编码

chardet 是一个用于自动检测字符编码的库,可以更准确地检测响应的编码。

安装chardet库

pip install chardet

代码应用示例

import requests
from bs4 import BeautifulSoup
import chardet

# 目标 URL
url = 'https://finance.sina.com.cn/realstock/company/sh600050/nc.shtml'

# 发送 HTTP GET 请求
response = requests.get(url)

# 检查请求是否成功
if response.status_code == 200:
    # 自动检测字符编码
    detected_encoding = chardet.detect(response.content)['encoding']
    
    # 设置响应的编码
    response.encoding = detected_encoding

    # 获取网页内容
    html_content = response.text
    
    # 使用 BeautifulSoup 解析 HTML 内容
    soup = BeautifulSoup(html_content, 'html.parser')
    
    # 要查找的 ID
    target_id = 'hqDetails'
    
    # 查找具有特定 ID 的标签
    element = soup.find(id=target_id)
    
    if element:
        # 获取该标签下的 HTML 内容
        element_html = str(element)
        print(f"ID 为 {target_id} 的 HTML 内容:\n{element_html}\n")
        
        # 查找该标签下的所有 table 元素
        tables = element.find_all('table')
        
        if tables:
            for i, table in enumerate(tables):
                print(f"第 {i+1} 个 table 的 HTML 内容:\n{table}\n")
        else:
            print(f"ID 为 {target_id} 的标签下没有 table 元素")
    else:
        print(f"未找到 ID 为 {target_id} 的标签")
else:
    print(f"请求失败,状态码: {response.status_code}")

Python自动检测requests所获得html文档的编码

可见,通过使用chardet库,可以有效实现代码的自动检测。

以上就是Python自动检测requests所获得html文档的编码的详细内容,更多关于Python检测requests获得html文档编码的资料请关注恩蓝小号其它相关文章!

原创文章,作者:HPLYV,如若转载,请注明出处:https://www.wangzhanshi.com/n/4988.html

(0)
HPLYV的头像HPLYV
上一篇 2024年12月17日 19:26:14
下一篇 2024年12月17日 19:26:16

相关推荐

  • 一文弄懂10大Pandas的索引

    今天给大家带来一篇关于Pandas的基本文章:10种你必须掌握的Pandas索引。 索引在我们的日常生活中其实是很常见的,就像: 一本书有自己的目录和具体的章节,当我们想找某个知识…

    2025年1月1日
  • pandas 时间格式转换的实现

    OUTLINE  常见的时间字符串与timestamp之间的转换 日期与timestamp之间的转换 常见的时间字符串与timestamp之间的转换 这里说的字符串不是一…

    Python 2025年2月10日
  • Python和OpenCV自制访客识别程序

    效果图 这是我用Pyqt5,基于OpenCV做的一个Python访客识别程序,它具体包括如下5个功能: 1、选择媒体菜单,可以打开本地摄像头;如果知道rtsp地址,则可以直接访问局…

    2024年12月17日
  • python模拟练习题总结(附答案)

    问题一 如果一个数 p 是个质数,同时又是整数 a的约数,则 p 称为 a的一个质因数。请问 2024 有多少个质因数? 步骤 1: 分解 2024 首先,2024 是偶数,说明可…

    Python 2024年12月17日
  • 在Python中使用SQLite的简单教程

    SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集…

    Python 2024年12月24日
  • python实现批量移动文件

    本文通过实例为大家分享了python实现批量移动文件的具体代码,供大家参考,具体内容如下 任务:每个大文件夹下有许多小文件夹,将小文件夹里的pdf文件移动到指定文件夹。如图: 最终…

    2024年12月27日
  • python中的post请求解读

    python post请求 post请求有4中编码方式 1.application/x-www-form-urlencoded application/x-www-form-url…

    2024年12月17日
  • Python根据给定模型进行特征权值计算

    在机器学习中,特征权重的计算是理解模型如何做出预测的重要步骤。通过计算特征权重,我们可以了解哪些特征对模型的预测结果贡献最大,从而优化特征选择和模型性能。本文将详细介绍如何使用Py…

    Python 2024年12月17日
  • 计算机二级python学习教程(3) python语言基本数据类型

    本文继续计算机二级python教程的学习,之前已经学习过了计算机二级python学习教程(1) 、计算机二级python学习教程(2) 3.1 数字类型 数字类型:整数类型、浮点数…

    2025年1月1日
  • Python configparser模块常用方法解析

    ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section), 每个节可以有多个参数(…

    Python 2025年2月10日

发表回复

登录后才能评论