Python输出编码

Python输出编码,python,encoding,Python,Encoding,代码如下所示。 在Debian 9中使用python 2运行 # -*- coding: utf-8 -*- import requests import bs4 # repairing invalid HTML s = requests.get('http://vstup.info/2017/i2017i483.html') tmp = s.text.replace("</td></tr></td></tr><tr><td&

代码如下所示。 在Debian 9中使用python 2运行

# -*- coding: utf-8 -*- 
import requests
import bs4

# repairing invalid HTML
s = requests.get('http://vstup.info/2017/i2017i483.html')
tmp = s.text.replace("</td></tr></td></tr><tr><td>", "</td></tr><tr><td>")

bs = bs4.BeautifulSoup(tmp, "html.parser")

content = bs.find("div", {"id": "okrArea"}).find("table", {"id": "about"}).findAll("tr")

typ = content[1].findAll("td")[1].get_text() #ZVO type

print typ
print [typ]
为什么变量打印输出与列表中的此变量不同? 如何从网页中获取正确的值 чччччч

在交互式python中,可以通过这种方式从反斜杠代码中获取

>>> print '\xd0\xa2\xd0\xb5\xd1\x85\xd0\xbd\xd1\x96\xd0\xba\xd1\x83\xd0\xbc (\xd1\x83\xd1\x87\xd0\xb8\xd0\xbb\xd0\xb8\xd1\x89\xd0\xb5)'.decode('utf8')
Технікум (училище)
使用拉丁语1

例:

使用拉丁语1

例:


您使用response.text错误地信任了服务器设置的HTTP内容字符集。这将为您提供使用标题信息从二进制响应数据解码的Unicode文本,这在这里是错误的。然后将Unicode字符串提供给BeautifulSoup,该字符串假定已正确解码

而是使用response.content属性,该属性提供原始二进制字符串内容体:

tmp = s.conent.replace("</td></tr></td></tr><tr><td>", "</td></tr><tr><td>")
现在数据仍然是一个二进制字符串,BeautifulSoup将根据HTML文档本身中的信息为您进行解码,其中有一个带有正确编解码器信息的标记:

>>> import requests, bs4
>>> s = requests.get('http://vstup.info/2017/i2017i483.html')
>>> tmp = s.content.replace("</td></tr></td></tr><tr><td>", "</td></tr><tr><td>")
>>> bs = bs4.BeautifulSoup(tmp, "html.parser")
>>> content = bs.select("div#okrArea table#about tr")
>>> typ = content[1].findAll("td")[1].get_text()
>>> print typ
Технікум (училище)

您使用response.text错误地信任了服务器设置的HTTP内容字符集。这将为您提供使用标题信息从二进制响应数据解码的Unicode文本,这在这里是错误的。然后将Unicode字符串提供给BeautifulSoup,该字符串假定已正确解码

而是使用response.content属性,该属性提供原始二进制字符串内容体:

tmp = s.conent.replace("</td></tr></td></tr><tr><td>", "</td></tr><tr><td>")
现在数据仍然是一个二进制字符串,BeautifulSoup将根据HTML文档本身中的信息为您进行解码,其中有一个带有正确编解码器信息的标记:

>>> import requests, bs4
>>> s = requests.get('http://vstup.info/2017/i2017i483.html')
>>> tmp = s.content.replace("</td></tr></td></tr><tr><td>", "</td></tr><tr><td>")
>>> bs = bs4.BeautifulSoup(tmp, "html.parser")
>>> content = bs.select("div#okrArea table#about tr")
>>> typ = content[1].findAll("td")[1].get_text()
>>> print typ
Технікум (училище)

BeautifulSoup使用了不正确的编解码器。BeautifulSoup使用了不正确的编解码器。FWIW,页面有点混乱。它有一个响应头,但响应头有一个编码:ISO-8859-1。是的,我意识到这太普遍了。@PM2Ring啊,是的,我错过了那里的.text错误。更正。FWIW,页面有点混乱。它有一个响应头,但响应头有一个编码:ISO-8859-1。是的,我意识到这太普遍了。@PM2Ring啊,是的,我错过了那里的.text错误。更正。
>>> import requests, bs4
>>> s = requests.get('http://vstup.info/2017/i2017i483.html')
>>> tmp = s.content.replace("</td></tr></td></tr><tr><td>", "</td></tr><tr><td>")
>>> bs = bs4.BeautifulSoup(tmp, "html.parser")
>>> content = bs.select("div#okrArea table#about tr")
>>> typ = content[1].findAll("td")[1].get_text()
>>> print typ
Технікум (училище)