bs4 UnicodeEncodeError: 'gbk' codec can't encode character '\xa0'


Problem:

寫爬蟲時,出現了以下錯誤:

意思是Unicode編碼錯誤,gbk編解碼器不能編碼\xa0字符。

爬取信息包含中文,使用BeautifulSoup庫解析網頁,用get_text()方法獲取標簽內的文本信息。

 

Debug:

解析:

當我們獲取這個網頁的源代碼的時候,是將這個網頁用utf-8的解碼方式將其轉換成對應的Unicode字符

當我們使用print()函數將其打印到Windows系統的DOS窗口上的時候(DOS窗口的編碼方式是GBK),自動將Unicode字符通過GBK編碼轉換為GBK編碼方式的str。

 

  • 出現問題(gbk編解碼器不能編碼\xa0字符)的原因?

網頁源代碼中的  的utf-8 編碼是:\xc2\xa0,解析后,轉換為Unicode字符為:\xa0,當使用print() 顯示到DOS窗口上的時候,轉換為GBK編碼的字符串,但是\xa0這個Unicode字符沒有對應的 GBK 編碼的字符串,所以出現錯誤。

 

Solve:

用空格 來替換 \xa0 ( ):

方法1:在網頁源碼上替換 

在解析之前對r.text中的網頁源碼的&nbsp進行替換

soup = BeautifulSoup(html.replace(' ', ' '), 'lxml')

  

方法2:在解析為Unicode之后替代\xa0

在get_text()解析之后對u'\xa0'進行替換

job_detail = soup.select('.job-detail')[0].get_text().replace(u'\xa0', ' ') 

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM