国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python中——requests爬蟲【中文亂碼】的3種解決方法

這篇具有很好參考價值的文章主要介紹了python中——requests爬蟲【中文亂碼】的3種解決方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

requests是一個較為簡單易用的HTTP請求庫,是python中編寫爬蟲程序最基礎(chǔ)常用的一個庫。
而【中文亂碼】問題,是最常遇到的問題,對于初學(xué)者來說,是很困惱的。
本文將詳細(xì)說明,python中使用requests庫編寫爬蟲程序時,出現(xiàn)【中文亂碼】的原因,及常見3種解決辦法。

一、【中文亂碼】情況及出現(xiàn)原因

(一)【中文亂碼】舉例

首先,本文的【中文亂碼】情況,指的是原網(wǎng)頁中的中文內(nèi)容在使用requests獲取后,中文完全無法識別的情況,區(qū)別于\x、\u等編碼情況。如下圖中的例子:
python requests亂碼,爬蟲,python,爬蟲,開發(fā)語言
注:requests.get()方法,返回一個response對象,其存儲了服務(wù)器響應(yīng)的內(nèi)容。

(二)出現(xiàn)【中文亂碼】原因

導(dǎo)致上圖中【中文亂碼】的原因:
使用requests庫時,選擇使用的文本響應(yīng)方法不合適,且沒有在代碼中添加設(shè)置合適的編碼,以致于使用【response.text】自動獲取到的網(wǎng)頁編碼,與實際網(wǎng)頁的編碼不一致,進(jìn)而產(chǎn)生【中文亂碼】。
使用requests庫時,可能已經(jīng)形成了一個習(xí)慣,常用【response.text】進(jìn)行文本響應(yīng),而【response.content】常用于圖片、視頻等。
這兩者,最大的一個區(qū)別就是:
1、【response.text】會自動根據(jù)HTTP頭部去推測網(wǎng)頁的編碼,解碼并返回解碼后的文本。
2、【response.content】不會解碼,直接以二進(jìn)制形式返回。
兩種文本響應(yīng)方法,如下表:

方法 釋義
response.text 服務(wù)器響應(yīng)的內(nèi)容,會自動根據(jù)響應(yīng)頭部的字符編碼進(jìn)行解碼。根據(jù)HTTP頭部對響應(yīng)的編碼做出有根據(jù)的推測,推測文本編碼。返回類型:str;常用于:響應(yīng)文本
response.content 字節(jié)方式的響應(yīng)體,不會根據(jù)HTTP頭部對響應(yīng)的編碼做出有根據(jù)的推測。返回類型:bytes(二進(jìn)制);常用于:圖片、視頻

二、3種處理【中文亂碼】的方法

(一)修改網(wǎng)頁文本獲取的方法

據(jù)上,已知原因是獲取文本的方法不對,顯然最簡單、直接的方法就是:
直接將response.text換成response.content
python requests亂碼,爬蟲,python,爬蟲,開發(fā)語言

(二)手動指定網(wǎng)頁編碼、再提取文本

據(jù)上,已知使用【response.text】時,會解碼返回,但解碼又與原網(wǎng)頁編碼不一致,而導(dǎo)致【中文亂碼】。
鑒于response也提供了【response.encoding】,來指定返回后的網(wǎng)頁編碼。
所以解決方法可以是:
手動指定網(wǎng)頁編碼,使之得到正常的文本
該方法的較第一種,相對麻煩一點:
首先,需要確認(rèn)原網(wǎng)頁的實際編碼,然后根據(jù)網(wǎng)頁實際編碼做出修改。
具體步驟如下:
1、查看網(wǎng)頁編碼
查看網(wǎng)頁編碼,有以下兩種方式:
(1)直接打開網(wǎng)頁源碼(html)【Ctr+U】,查看編碼:【charset】的值。
python requests亂碼,爬蟲,python,爬蟲,開發(fā)語言
(2)使用response的encoding、apparent_encoding,得到網(wǎng)頁編碼。
encoding、apparent_encoding兩者最大的區(qū)別:
encoding是從header中去提取,而apparent_encoding是從網(wǎng)頁源碼去解析,apparent_encoding得到的結(jié)果更準(zhǔn)確。
詳細(xì)如下表:

屬性 釋義
response.encoding 從網(wǎng)頁響應(yīng)的header中,提取charset字段中的編碼。若header中沒有charset字段,則默認(rèn)為ISO-8859-1編碼模式,ISO-8859-1編碼無法解析中文,這也是中文亂碼的原因。
response.apparent_encoding 從網(wǎng)頁的內(nèi)容中(html源碼)中分析網(wǎng)頁編碼的方式。所以apparent_encoding比encoding更加準(zhǔn)確,獲取到的才是原網(wǎng)頁的實際編碼。

以(1)中網(wǎng)址為例,網(wǎng)頁的真實編碼為【GB2312】。
使用encoding、apparent_encoding兩種方法,所得的結(jié)果是不一致的,apparent_encoding才是原網(wǎng)頁實際編碼。如下圖:
python requests亂碼,爬蟲,python,爬蟲,開發(fā)語言
2、手動指定文本編碼
根據(jù)上述方法,獲得原網(wǎng)頁的實際編碼后,手動在代碼中指定文本編碼格式,即可解決【中文亂碼】問題。
寫法有2種,可任選其一,如下圖:
python requests亂碼,爬蟲,python,爬蟲,開發(fā)語言

(三)在文本獲取后對【中文亂碼】進(jìn)行轉(zhuǎn)碼

除了以上2種解決辦法外,還可以使用pyhton自帶的編碼方法,把【中文亂碼】的內(nèi)容再次進(jìn)行轉(zhuǎn)碼,轉(zhuǎn)換為成網(wǎng)頁實際的編碼格式即可。
轉(zhuǎn)碼方式:encode(‘iso-8859-1’).decode(‘編碼格式’)
如上面例子中,網(wǎng)頁編碼實際為“gb2312”,代碼可修改為:
python requests亂碼,爬蟲,python,爬蟲,開發(fā)語言
以上就python使用requests庫編寫爬蟲時,出現(xiàn)【中文亂碼】的原因,及常見的三種處理方法,可供參考。

-end文章來源地址http://www.zghlxwxcb.cn/news/detail-659072.html

到了這里,關(guān)于python中——requests爬蟲【中文亂碼】的3種解決方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • response 中文亂碼的兩個解決方法

    使用輸出流輸出數(shù)據(jù)是一種編碼解碼的過程,輸出流對象是從response獲取出來的,源頭上就是從Tomcat中取出來的,Tomcat試用的編碼是ISO-8859-1,而瀏覽器默認(rèn)的編碼是操作系統(tǒng)的字符集,也就是GBK,由于編碼和解碼的字符集不同,所以造成了亂碼的結(jié)果。 解決的思路就是告訴瀏

    2024年02月11日
    瀏覽(20)
  • 解決JavaScript中文亂碼問題的方法

    在JavaScript編程中,處理字符串時經(jīng)常會遇到中文亂碼的問題。這種問題通常發(fā)生在字符串截取操作中,特別是當(dāng)截取的字符串中包含中文字符時。本文將介紹一些解決JavaScript中文亂碼問題的方法,并提供相應(yīng)的源代碼示例。 方法一:使用Unicode編碼 一種常見的解決方案是使

    2024年02月04日
    瀏覽(19)
  • IDEA中解決中文亂碼問題的方法

    IDEA中解決中文亂碼問題的方法

    在IDEA中創(chuàng)建的java項目,會遇到一些中文亂碼問題。一般都是在控制臺上會顯示中文亂碼。 則可以用以下幾種方式進(jìn)行操作。 在IDEA左上角File----Setting中找到文件編碼,如下: 如果使用的有Tomcat服務(wù)器的話,可以進(jìn)行如下操作: 在IDEA上方菜單欄中找到Help----Edit Custome VM Opti

    2024年02月09日
    瀏覽(20)
  • 爬蟲—響應(yīng)頁面亂碼問題解決方法

    爬蟲—響應(yīng)頁面亂碼問題解決方法

    案例:騰牛網(wǎng)圖片抓取 源代碼如下: 執(zhí)行之后,報錯如下: 解決辦法: 方法一,設(shè)置解碼格式為’GBK’ 運行結(jié)果如下: 方法二,自動獲取解碼格式

    2024年01月21日
    瀏覽(31)
  • windows 解壓文件出現(xiàn)亂碼 7zip解壓文件中文亂碼 解決方法

    按照如下教程,更改windows默認(rèn)編碼格式為utf-8之后。 https://blog.csdn.net/qq_43780850/article/details/129122210 解壓文件時,文件中的中文出現(xiàn)亂碼。原因是壓縮文件的格式為GBK,而我將windows平臺的默認(rèn)編碼改成了UTF-8,導(dǎo)致解壓出現(xiàn)亂碼。此時只需要按照上面的教程,取消勾選utf-8支持

    2024年02月13日
    瀏覽(28)
  • Hive中處理中文亂碼問題的解決方法

    中文亂碼是在處理大數(shù)據(jù)時經(jīng)常遇到的問題之一,尤其是在使用Hive進(jìn)行數(shù)據(jù)分析和查詢時。本文將介紹一些解決Hive中文亂碼問題的方法,并提供相應(yīng)的源代碼示例。 設(shè)置Hive的字符集編碼 在Hive中,可以通過設(shè)置字符集編碼來解決中文亂碼問題。通過在Hive會話中設(shè)置\\\"client.

    2024年02月04日
    瀏覽(22)
  • 記錄解決vscode的終端中文亂碼的方法

    記錄解決vscode的終端中文亂碼的方法

    ?今天在編譯運行以上猜數(shù)字代碼時,發(fā)現(xiàn)vscode的終端中文存在亂碼現(xiàn)象 然后CSDN上參考了文章解決vscode的終端中文亂碼的方法 了解到主要是vscode和power shell兩部分編碼存在不統(tǒng)一的問題 使用chcp指令,可以查詢當(dāng)前終端上的編碼類型 活動代碼頁:936 代表當(dāng)前終端采用的是g

    2024年02月16日
    瀏覽(19)
  • VBA編輯器中文亂碼的解決方法

    在VBA(Visual Basic for Applications)編輯器中,有時候會遇到中文亂碼的問題。這可能是由于編碼設(shè)置不正確或者字體不支持中文字符所導(dǎo)致的。在本文中,我將向您介紹一些解決VBA編輯器中文亂碼問題的方法。 更改VBA編輯器的字體: 有時候,VBA編輯器默認(rèn)的字體不支持中文字符

    2024年02月04日
    瀏覽(46)
  • Qt中出現(xiàn)中文亂碼的原因以及解決方法

    Qt中出現(xiàn)中文亂碼的原因以及解決方法

    Qt專欄: 目錄 1.引言 2.原因分析 3.源文件的編碼格式修改方法 4.程序內(nèi)部使用的默認(rèn)編碼格式修改方法 5.QString轉(zhuǎn)std::string的方法 6.總結(jié) ? ? ? ? 在編寫Qt程序的時候,或多或少都可能遇到用QString時候,明明自己寫的是中文,但是在界面上顯示出來卻是亂碼,最終的原因都是

    2024年04月15日
    瀏覽(27)
  • 最簡單的VSCode解決中文亂碼方法(親測有用)

    最簡單的VSCode解決中文亂碼方法(親測有用)

    解決VSCode輸出中文亂碼問題 前言 一、問題的起因 二、解決方法 1.進(jìn)入setting.json文件 2.輸入代碼 3.驗證 總結(jié) ????????在剛接觸VSCode編程過程中,經(jīng)常會遇到中文亂碼的問題。查詢了不少相關(guān)的博客,解決方法很多,但實際沒有幫到我,琢磨了半天,找到了可行方法,這里

    2024年02月05日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包