3

私はBeautifulSoupを使用してスウェーデンのWebページをスクレイプしています。Webページでは、抽出したい情報は次のようになります。

"Öhman Företagsobligationsfond"

Pythonスクリプトから情報を印刷すると、次のようになります。

"Öhman Företagsobligationsfond"

私はPythonを初めて使用し、答えを検索し# -- coding: utf-8 --てコードの最初で使用しようとしましたが、機能しません。

この問題を解決するためにスウェーデンから引っ越すことを考えています。

4

1 に答える 1

3

使用# -- 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です。

于 2012-11-11T10:01:34.590 に答える