使用# -- coding: utf-8 --
する場合は、ソースコードドキュメントのエンコーディングのみを指定します。解析しているページは、おそらく誤ったエンコーディングを宣言している(またはまったく宣言していない)ため、BeautifulSoupは失敗します。スープを作るときにエンコーディングを指定してみてください。これが小さな例です:
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>
Beautiful Soup 4では、パラメーターはですがfrom_encoding
、バージョン3では、パラメーターはfromEncoding
です。