亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python自動(dòng)檢測(cè)requests所獲得html文檔的編碼

 更新時(shí)間:2024年11月18日 11:12:46   作者:Humbunklung  
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Python自動(dòng)檢測(cè)requests實(shí)現(xiàn)獲得html文檔的編碼,文中的示例代碼講解詳細(xì),感興趣的可以了解下

使用chardet庫(kù)自動(dòng)檢測(cè)requests所獲得html文檔的編碼

使用requests和BeautifulSoup庫(kù)獲取某個(gè)頁(yè)面帶來(lái)的亂碼問(wèn)題

使用requests配合BeautifulSoup庫(kù),可以輕松地從網(wǎng)頁(yè)中提取數(shù)據(jù)。但是,當(dāng)網(wǎng)頁(yè)返回的編碼格式與Python默認(rèn)的編碼格式不一致時(shí),就會(huì)導(dǎo)致亂碼問(wèn)題。

以如下代碼為例,它會(huì)獲取到一段亂碼的html:

import requests
from bs4 import BeautifulSoup

# 目標(biāo) URL
url = 'https://finance.sina.com.cn/realstock/company/sh600050/nc.shtml'

# 發(fā)送 HTTP GET 請(qǐng)求
response = requests.get(url)

# 檢查請(qǐng)求是否成功
if response.status_code == 200:

    # 獲取網(wǎng)頁(yè)內(nèi)容
    html_content = response.text
    
    # 使用 BeautifulSoup 解析 HTML 內(nèi)容
    soup = BeautifulSoup(html_content, 'html.parser')
    
    # 要查找的 ID
    target_id = 'hqDetails'
    
    # 查找具有特定 ID 的標(biāo)簽
    element = soup.find(id=target_id)
    
    if element:
        # 獲取該標(biāo)簽下的 HTML 內(nèi)容
        element_html = str(element)
        print(f"ID 為 {target_id} 的 HTML 內(nèi)容:\n{element_html}\n")
        
        # 查找該標(biāo)簽下的所有 table 元素
        tables = element.find_all('table')
        
        if tables:
            for i, table in enumerate(tables):
                print(f"第 {i+1} 個(gè) table 的 HTML 內(nèi)容:\n{table}\n")
        else:
            print(f"ID 為 {target_id} 的標(biāo)簽下沒(méi)有 table 元素")
    else:
        print(f"未找到 ID 為 {target_id} 的標(biāo)簽")
else:
    print(f"請(qǐng)求失敗,狀態(tài)碼: {response.status_code}")

我們可以通過(guò)通過(guò)手工指定代碼的方式來(lái)解決這個(gè)問(wèn)題,例如在response.status_code == 200后,通過(guò)response.encoding = 'utf-8'指定代碼,又或通過(guò)soup = BeautifulSoup(html_content, 'html.parser', from_encoding='utf-8') 來(lái)指定編碼。

然而,當(dāng)我們獲取的html頁(yè)面編碼不確定的時(shí)候,有沒(méi)有更好的辦法讓編碼監(jiān)測(cè)自動(dòng)執(zhí)行呢?這時(shí)候chardet編碼監(jiān)測(cè)庫(kù)是一個(gè)很好的幫手。

使用 chardet 庫(kù)自動(dòng)檢測(cè)編碼

chardet 是一個(gè)用于自動(dòng)檢測(cè)字符編碼的庫(kù),可以更準(zhǔn)確地檢測(cè)響應(yīng)的編碼。

安裝chardet庫(kù)

pip install chardet

代碼應(yīng)用示例

import requests
from bs4 import BeautifulSoup
import chardet

# 目標(biāo) URL
url = 'https://finance.sina.com.cn/realstock/company/sh600050/nc.shtml'

# 發(fā)送 HTTP GET 請(qǐng)求
response = requests.get(url)

# 檢查請(qǐng)求是否成功
if response.status_code == 200:
    # 自動(dòng)檢測(cè)字符編碼
    detected_encoding = chardet.detect(response.content)['encoding']
    
    # 設(shè)置響應(yīng)的編碼
    response.encoding = detected_encoding

    # 獲取網(wǎng)頁(yè)內(nèi)容
    html_content = response.text
    
    # 使用 BeautifulSoup 解析 HTML 內(nèi)容
    soup = BeautifulSoup(html_content, 'html.parser')
    
    # 要查找的 ID
    target_id = 'hqDetails'
    
    # 查找具有特定 ID 的標(biāo)簽
    element = soup.find(id=target_id)
    
    if element:
        # 獲取該標(biāo)簽下的 HTML 內(nèi)容
        element_html = str(element)
        print(f"ID 為 {target_id} 的 HTML 內(nèi)容:\n{element_html}\n")
        
        # 查找該標(biāo)簽下的所有 table 元素
        tables = element.find_all('table')
        
        if tables:
            for i, table in enumerate(tables):
                print(f"第 {i+1} 個(gè) table 的 HTML 內(nèi)容:\n{table}\n")
        else:
            print(f"ID 為 {target_id} 的標(biāo)簽下沒(méi)有 table 元素")
    else:
        print(f"未找到 ID 為 {target_id} 的標(biāo)簽")
else:
    print(f"請(qǐng)求失敗,狀態(tài)碼: {response.status_code}")

可見(jiàn),通過(guò)使用chardet庫(kù),可以有效實(shí)現(xiàn)代碼的自動(dòng)檢測(cè)。

以上就是Python自動(dòng)檢測(cè)requests所獲得html文檔的編碼的詳細(xì)內(nèi)容,更多關(guān)于Python檢測(cè)requests獲得html文檔編碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Pytho常見(jiàn)的數(shù)據(jù)可視化庫(kù),小白必備

    Pytho常見(jiàn)的數(shù)據(jù)可視化庫(kù),小白必備

    Python作為數(shù)據(jù)分析的重要語(yǔ)言為數(shù)據(jù)分析的每個(gè)環(huán)節(jié)都提供了很多庫(kù).常見(jiàn)的數(shù)據(jù)可視化庫(kù)包括matplotib,seaborm,ggplot,bokeh,pygal,pyecharts等,下面小編一一介紹下,需要的朋友可以參考下
    2021-05-05
  • pytorch: Parameter 的數(shù)據(jù)結(jié)構(gòu)實(shí)例

    pytorch: Parameter 的數(shù)據(jù)結(jié)構(gòu)實(shí)例

    今天小編就為大家分享一篇pytorch: Parameter 的數(shù)據(jù)結(jié)構(gòu)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python添加進(jìn)度條tqdm進(jìn)階使用實(shí)例

    Python添加進(jìn)度條tqdm進(jìn)階使用實(shí)例

    這篇文章主要為大家介紹了Python添加進(jìn)度條tqdm進(jìn)階使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Python爬蟲(chóng)采集Tripadvisor數(shù)據(jù)案例實(shí)現(xiàn)

    Python爬蟲(chóng)采集Tripadvisor數(shù)據(jù)案例實(shí)現(xiàn)

    這篇文章主要為大家介紹了Python爬蟲(chóng)采集Tripadvisor數(shù)據(jù)案例實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python學(xué)生成績(jī)管理系統(tǒng)簡(jiǎn)潔版

    Python學(xué)生成績(jī)管理系統(tǒng)簡(jiǎn)潔版

    這篇文章主要為大家詳細(xì)介紹了簡(jiǎn)潔版的Python學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python學(xué)習(xí)之time模塊的基本使用

    Python學(xué)習(xí)之time模塊的基本使用

    這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)之time模塊基本使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python中下標(biāo)和切片的使用方法解析

    python中下標(biāo)和切片的使用方法解析

    這篇文章主要介紹了python中下標(biāo)和切片的使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 詳解python 一維、二維列表的初始化問(wèn)題

    詳解python 一維、二維列表的初始化問(wèn)題

    這篇文章主要介紹了python 一維、二維列表的初始化,本文通過(guò)兩種方式給大家詳細(xì)講解,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-06-06
  • python隨機(jī)生成庫(kù)faker庫(kù)api實(shí)例詳解

    python隨機(jī)生成庫(kù)faker庫(kù)api實(shí)例詳解

    今天小編就為大家分享一篇python隨機(jī)生成庫(kù)faker庫(kù)api實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Python3.8對(duì)可迭代解包的改進(jìn)及用法詳解

    Python3.8對(duì)可迭代解包的改進(jìn)及用法詳解

    這篇文章主要介紹了Python3.8對(duì)可迭代解包的改進(jìn)及用法詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論