美丽的汤,Python和瑞典人物ÅÄÖ

时间:2012-11-11 09:42:03

标签: python encoding beautifulsoup

我正在使用BeautifulSoup来抓取瑞典网页。在网页上,我想要提取的信息如下所示:

"Öhman Företagsobligationsfond"

当我从Python脚本中打印信息时,它看起来像这样:

"Öhman Företagsobligationsfond"

我是Python的新手,我已经搜索了答案,并尝试在代码的开头使用# -- coding: utf-8 --,但它不起作用。

我正考虑从瑞典搬到这个问题。

1 个答案:

答案 0 :(得分:3)

使用# -- coding: utf-8 --时,您只需指定源代码文档的编码。您正在解析的页面可能已声明编码错误(或根本没有),因此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>

在Beautiful Soup 4中,参数为from_encoding,而在版本3中,参数为fromEncoding