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中的網頁源碼的 進行替換
soup = BeautifulSoup(html.replace(' ', ' '), 'lxml')
方法2:在解析為Unicode之后替代\xa0
在get_text()解析之后對u'\xa0'進行替換
job_detail = soup.select('.job-detail')[0].get_text().replace(u'\xa0', ' ')