python爬蟲筆記 編碼問題

2021-08-20 02:45:46 字數 1996 閱讀 9923

importurllib2

importurllib

importrequests

frombs4

importbeautifulsoup

url =

""

respones = requests.get(url).text

soup = beautifulsoup(respones,

'html.parser')

info = soup.findall(

'div', )

#info----resultset object

fori

ininfo:

# print i.text #'unicode' object 

# print i.text.encode('utf-8')#---- (

轉為utf-8

編碼) 

# c = i.text.split("/") #-----split()

方法使用以後,

變成list

上為其中一項

printi.text.replace(

'\n',

'').replace(

'/',

'')

#也可使用re.sub 利用正則

#但是print i.text.split("/"),控制台漢字顯示為unicode編碼,如下:

printi.text.split(

"/")

#-----list        split()

方法使用以後,

str變成 

原因未知,先記下,下次解決再更新

原因:python2.7中呼叫print列印變數x時,作業系統會對變數x做一定的字元處理:如果x是str型別的變數,則直接將x變數交付給終端進行顯示;如果x變數是unicode型別,則作業系統首先將x編碼成str型別的物件(編碼格式取決於stdout的編碼格式),然後再交由終端進行顯示。在終端顯示時,如果str型別的變數的編碼方式和終端設定的編碼方式不一致,很可能會出現亂碼問題。

在上面 

printi.text 和printi.text.replace('\n','').replace('/','') 中,print將i.text等交給作業系統進行轉碼,編碼成str型別,所以可以正常顯示中文。而i.text.split()為乙個列表,所以print會直接將結果輸出,不會交給作業系統編碼。

參考:

爬蟲編碼問題

在獲取網頁時會遇到各種各樣的編碼問題,我們有不同的編碼方式,但是在使用beautifulsoup時,他有自動檢測編碼的功能,但是這樣遍歷一遍,知道編碼也是乙個很慢的過程。而且依然有可能出錯。因此我們可以在例項化beautifulsoup時,加上編碼規則,這樣就可避免錯誤。首先我們先檢視爬蟲的頁面的編...

python3爬蟲編碼問題

使用爬蟲爬取網頁經常遇到各種編碼問題,因此產生亂碼 今天折騰了一天,全部總結一遍 import requests url response requests.get url content response.text print content 結果有 顯示,但是出現亂碼 使用urllib庫 imp...

python3爬蟲編碼問題

使用爬蟲爬取網頁經常遇到各種編碼問題,因此產生亂碼 今天折騰了一天,全部總結一遍 import requests url response requests.get url content response.text print content 結果有 顯示,但是出現亂碼 使用urllib庫 imp...