欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python爬蟲XPath解析出亂碼的問題及解決

 更新時間:2024年05月24日 15:32:27   作者:平人的進步日常  
這篇文章主要介紹了Python爬蟲XPath解析出亂碼的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Python爬蟲XPath解析出亂碼

請求后加上編碼

resp = requests.get(url, headers=headers)
resp.encoding = 'GBK'

Python XPath解析html出現(xiàn)â??解決方法 html出現(xiàn){

爬網(wǎng)頁又遇到一個坑,老是出現(xiàn)a亂碼,查看html出現(xiàn)的是&#數(shù)字;這樣的。

網(wǎng)上相關(guān)的“Python字符中出現(xiàn)&#的解決辦法”又沒有很好的解決,自己繼續(xù)沖浪,費了一番功夫解決了。

這算是又加深了一下我對這些iso、Unicode編碼的理解。故分享。

問題

用Python的lxml解析html時,調(diào)用text()輸出出來的結(jié)果帶有a這樣的亂碼:

網(wǎng)頁原頁面展示:

爬取代碼:

url = "xxx"
 
response = requests.request("GET", url)
 
html = etree.HTML(response.text)
 
# 直接調(diào)用text函數(shù)
description = html.xpath('//div[@class="xxx"]/div/div//text()')
# 直接打印
for desc in description:
    print(desc)

原因

不用說自然是編碼的問題。下面教大家排查和解決。

排查與解決

首先查看返回的響應(yīng)是如何編碼的:

response = requests.request("GET", url, proxies=proxy)
# 得到響應(yīng)之后,先檢查一下它的編碼方式
print(response.encoding)

結(jié)果如下:

然后根據(jù)這個編碼的方式再來解碼:

html = etree.HTML(response.text)
 
description = html.xpath('//div[@class="xxx"]/div/div//text()')
 
for desc in description:
    # print(desc)
    # 根據(jù)上面的結(jié)果,用iso88591來編碼,再解碼為utf-8
    print(desc.encode("ISO-8859-1").decode("utf-8"))

結(jié)果如下:

完整代碼:

url = "xxx"
 
response = requests.request("GET", url)
print(response.encoding)
 
html = etree.HTML(response.text)
 
description = html.xpath('//div[@class="xxx"]/div/div//text()')
 
for desc in description:
    print(desc.encode("ISO-8859-1").decode("utf-8"))
    # print(desc)

總結(jié)

網(wǎng)上有用python2流傳下來的HTMLParser的,還有用python3的html包的,效果都不好。

不過也有改response的編碼方式的,就是這樣:

url = "xxx"
 
response = requests.request("GET", url)
 
# html = etree.HTML(response.text)
html = etree.HTML(response.content)  # 改用二進制編碼
 
# 直接調(diào)用text函數(shù)
description = html.xpath('//div[@class="xxx"]/div/div//text()')
# 直接打印
for desc in description:
    print(desc)

也能成功解析。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用Python批量生成任意尺寸的圖片

    利用Python批量生成任意尺寸的圖片

    不知道大家有沒有遇到過,因檢驗需要1000張,分別從1*1到1000*1000像素的圖片。搜索一番過后發(fā)現(xiàn)還是Python實現(xiàn)比較方便,遂決定用Python實現(xiàn)這一功能,下面分享給大家,有需要的可以參考。
    2016-08-08
  • Python設(shè)計模式之模板方法模式實例詳解

    Python設(shè)計模式之模板方法模式實例詳解

    這篇文章主要介紹了Python設(shè)計模式之模板方法模式,結(jié)合實例形式較為詳細的分析了模板方法模式的概念、原理及Python定義、使用模板方法模式相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Python下載Pandas包的步驟

    Python下載Pandas包的步驟

    這篇文章主要介紹了Python下載Pandas包的步驟,在python中安裝pandas庫,我采取的方法是用PIP的方法在Python目標位置進行安裝,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • 用Python解數(shù)獨的方法示例

    用Python解數(shù)獨的方法示例

    這篇文章主要介紹了用Python解數(shù)獨的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • pyhton列表轉(zhuǎn)換為數(shù)組的實例

    pyhton列表轉(zhuǎn)換為數(shù)組的實例

    下面小編就為大家分享一篇pyhton列表轉(zhuǎn)換為數(shù)組的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python vtk讀取并顯示dicom文件示例

    Python vtk讀取并顯示dicom文件示例

    今天小編就為大家分享一篇Python vtk讀取并顯示dicom文件示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Pandas數(shù)據(jù)處理庫畫圖與文件讀取使用示例

    Pandas數(shù)據(jù)處理庫畫圖與文件讀取使用示例

    這篇文章主要為大家介紹了Pandas數(shù)據(jù)處理庫畫圖與文件讀取使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Python-with open() as f的用法及說明

    Python-with open() as f的用法及說明

    這篇文章主要介紹了Python-with open() as f的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python隊列RabbitMQ 使用方法實例記錄

    Python隊列RabbitMQ 使用方法實例記錄

    這篇文章主要介紹了Python隊列RabbitMQ 使用方法,結(jié)合實例形式分析了Python隊列RabbitMQ創(chuàng)建隊列發(fā)送消息與創(chuàng)建消費者消費信息相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • python 用遞歸實現(xiàn)通用爬蟲解析器

    python 用遞歸實現(xiàn)通用爬蟲解析器

    這篇文章主要介紹了python 用遞歸實現(xiàn)通用爬蟲解析器的方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04

最新評論