美人汤还怪(中国)

2024-09-28 17:29:39 发布

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

使用Python3和beautifulsoupv4

url='http://www.eurobasket2015.org/en/compID_qMRZdYCZI6EoANOrUf9le2.season_2015.roundID_9322.gameID_9323-C-1-1.html'
r=requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")

返回您期望的结果

然而

对于这个网址,类似的网页,但不同的游戏 http://www.eurobasket2015.org/en/compID_qMRZdYCZI6EoANOrUf9le2.season_2015.roundID_9322.gameID_9323-D-3-1.html

同样的代码返回

目前,各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各12081呄⽄


Tags: orghttpurlhtmlwwwrequestspython3en
1条回答
网友
1楼 · 发布于 2024-09-28 17:29:39

我可以使用.content进行复制,之所以会发生这种情况是因为下面的meta标记,charset被设置为UTF-16

<META http-equiv="Content-Type" content="text/html; charset=UTF-16">

一种解决方法是将from_encoding指定为utf-8:

soup = BeautifulSoup(r.content,"lxml", from_encoding="utf-8")

您还可以解码字节:

soup = BeautifulSoup(r.content.decode("utf-8"))

如果打印头,您可以看到'Content-Type': 'text/html; Charset=UTF-8',数据实际上是utf-8编码的,但是meta标记不正确。你知道吗

如果我们得到了内容,我们自己解码并打印一个片段,你可以看到它实际上被bs4解码成了utf-16:

In [1]: import requests

In [2]: r = requests.get("http://www.eurobasket2015.org/en/compID_qMRZdYCZI6EoANOrUf9le2.season_2015.roundID_9322.gameID_9323-D-3-1.html")

In [3]: print(r.content.decode("utf-16")[:10])
ℼ佄呃偙⁅瑨汭倠䉕䥌

In [4]: print(r.content.decode("utf-8")[:10])
<!DOCTYPE 

相关问题 更多 >