我使用BeautifulSoup刮瑞典網頁。在網頁上,我想提取的信息是這樣的:美麗的湯,Python和瑞典字符ÅÄ
"Öhman Företagsobligationsfond"
當我從Python腳本打印信息,它看起來像這樣:
"Öhman Företagsobligationsfond"
我是新來的Python和我已經搜索了答案,並在代碼的開頭嘗試使用,但它不起作用。
我正在考慮從瑞典搬遷來解決這個問題。
我使用BeautifulSoup刮瑞典網頁。在網頁上,我想提取的信息是這樣的:美麗的湯,Python和瑞典字符ÅÄ
"Öhman Företagsobligationsfond"
當我從Python腳本打印信息,它看起來像這樣:
"Öhman Företagsobligationsfond"
我是新來的Python和我已經搜索了答案,並在代碼的開頭嘗試使用,但它不起作用。
我正在考慮從瑞典搬遷來解決這個問題。
使用時,只能指定源代碼文檔的編碼。您正在解析的頁面可能聲明瞭錯誤的編碼(或者根本沒有),因此Beautiful Soup失敗。嘗試在構建湯時指定編碼。這裏是一個小例子:
markup = '''
<html>
<head>
<title>Övriga fakta</title>
<meta charset="latin-1" />
</head>
<body>
<h1>Öhman Företagsobligationsfond</h1>
<p>Detta är en svensk sida.</p>
</body>
</html>
'''
soup = BeautifulSoup(markup)
print soup.find('h1')
try:
# Version 4
soup = BeautifulSoup(markup, from_encoding='utf-8')
except TypeError:
# Version 3
soup = BeautifulSoup(markup, fromEncoding='utf-8')
print soup.find('h1')
輸出從這個是:
<h1>Ãhman Företagsobligationsfond</h1>
<h1>Öhman Företagsobligationsfond</h1>
在美麗的湯4中,參數是from_encoding
,而在版本3中,參數是fromEncoding
。
您是否檢查過您正在解析的HTML文本(在beautifulsoup之前)是否由python正確解碼?它可能是源不是UTF-8,或者是UTF-8,但被解碼爲其他內容。 另外,如果你分享你的代碼,你更可能得到有用的幫助。 – onon15
好評。我檢查了原始的HTML文本,它看起來像使用charset = iso-8859-1。那我該怎麼做? – Jonas
您可以使用原始HTML文本上的'string.decode'來修復。 (或者使用beautifulsoup的'from_encoding'參數,它的作用非常類似) – onon15