美化组更改HTML

2024-09-30 08:23:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到,当我从网页上用漂亮的汤得到HTML时,它会发生变化。这是我用来获取它的代码:

from bs4 import BeautifulSoup
import requests
url ="http://www.basketnews.lt/lygos/59-nacionaline-krepsinio-asociacija/2013/naujienos.html"
r = requests.get(url)
soup = BeautifulSoup(r.text)
print soup

以下是原始HTML的一部分:

^{pr2}$

以下是HTML中与Beautiful Soup相同的部分:

<a href="/news-73149-valanciunui-ir-raptors-sezonas-baigtas-foto-statistika.html">ValanÄiÅ«nui ir âRaptorsâ sezonas baigtas <span class="title_description">(foto, statistika)</span></a>

您可以看到我正在解析的HTML中的文本是如何混乱的。问题出在哪里?在


Tags: 代码importurl网页irhtmlrequestsspan
1条回答
网友
1楼 · 发布于 2024-09-30 08:23:50

您使用的是r.text,这意味着requests将使用默认编码;但是它会出错:

>>> r = requests.get(url)
>>> r.headers['content-type']
'text/html'
>>> r.encoding
'ISO-8859-1'
>>> r.apparent_encoding
'utf-8'

ISO-8859-1(拉丁语1)是HTTP 1.1 default encoding for ^{} responses。在

当使用检测算法时,会发现UTF-8。在

您不应该使用r.text,而应该使用r.content,让BeautifulGroup来执行检测:

^{pr2}$

现在它可以正常工作:

^{3}$

beauthulsoup也使用自动检测,但在本例中,它将在页面中找到编码正确的<meta>报头:

>>> soup.find('meta', {'http-equiv': 'content-type'})
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>

相关问题 更多 >

    热门问题