我使用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