我正在使用BeautifulSoup来抓取瑞典网页。在网页上,我想要提取的信息如下所示:
"Öhman Företagsobligationsfond"
当我从Python脚本中打印信息时,它看起来像这样:
"Öhman Företagsobligationsfond"
我是Python的新手,我已经搜索了答案,并尝试在代码的开头使用# -- coding: utf-8 --
,但它不起作用。
我正考虑从瑞典搬到这个问题。
答案 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
。