2016-11-20 75 views
0

我想寫一個使用beautifulsoup的python scrapper。我成功地提取了大部分數據,但我現在面臨的是價格提取中的編碼問題。如何更正用beautifulsoup報廢的數據的編碼?

這是我的例子:

的實際文本是1599€99

報廢的文字是:

>>>prdt.find("span",{"class":"price"}).text 
u'1599\u20ac99' 

「\ u20ac」 應該是使用 '€' 符號然而,UTF-8編碼:

>>>prdt.find("span",{"class":"price"}).text.encode(encoding='UTF-8') 
'1599\xe2\x82\xac99' 

有誰知道如何解決這個問題?

謝謝。

回答

0

你的腳本運行良好:

>>> prdt.find("span",{"class":"price"}).text 
u'1599\u20ac99' 

返回值是一個有效的Unicode 字符串。字符u「\ u20ac」是EURO SIGN

如果您使用'utf8'編碼對此字符進行編碼,則會得到一個字節的字符串

>>> u'\u20ac'.encode('utf8') 
b'\xe2\x82\xac' 

這是用UTF-8編碼的相同碼點:E2 82 AC。

另請參閱對What is Unicode, UTF-8, UTF-16?的回答。

1

它表示一個Unicode字符串。您可以通過簡單地打印來看到它的內容。

>>> u1= u'1599\u20ac99' 

>>> print u1 
# prints 1599€99 

>>> u2 = u'1599€99' 

>>> u2 
# prints u'1599\u20ac99'