从python urllib获取非ascii字符作为响应

从python urllib获取非ascii字符作为响应,python,python-3.x,urllib,Python,Python 3.x,Urllib,请帮助解决此编码问题。我需要解析XML内容。响应开头的神奇字节0x1f8b表示zlib压缩。服务器通常会压缩数据进行传输,浏览器会自动解压缩数据。在这里,您必须自己执行第二步: import urllib from urllib.request import urlopen import xml.etree.ElementTree as etree response = urllib.request.urlopen("http://regnskaber.virk.dk/32673592/eGJy

请帮助解决此编码问题。我需要解析XML内容。

响应开头的神奇字节
0x1f8b
表示zlib压缩。服务器通常会压缩数据进行传输,浏览器会自动解压缩数据。在这里,您必须自己执行第二步:

import urllib
from urllib.request import urlopen
import xml.etree.ElementTree as etree
response = urllib.request.urlopen("http://regnskaber.virk.dk/32673592/eGJybHN0b3JlOi8vWC1GNzY5MUY0Ny0yMDE0MDMyOV8xMzQxNThfMTc5L3hicmw.xml")

print (response.getcode())

print (response.readline()) # it gets the first line if you need to the check the output
输出:

import urllib
from urllib.request import urlopen
import xml.etree.ElementTree as ET
from io import BytesIO
import gzip
response = urllib.request.urlopen("http://regnskaber.virk.dk/32673592/eGJybHN0b3JlOi8vWC1GNzY5MUY0Ny0yMDE0MDMyOV8xMzQxNThfMT\
c5L3hicmw.xml")
print (response.getcode())

data = response.read()

compdata = BytesIO(data)
text = []
for unit in gzip.GzipFile(fileobj=compdata):
    text.append(unit)
text = b"".join(text)

tree = ET.fromstring(text)
print(tree)
200

响应开始处的魔法字节
0x1f8b
表示zlib压缩。服务器通常会压缩数据进行传输,浏览器会自动解压缩数据。在这里,您必须自己执行第二步:

import urllib
from urllib.request import urlopen
import xml.etree.ElementTree as etree
response = urllib.request.urlopen("http://regnskaber.virk.dk/32673592/eGJybHN0b3JlOi8vWC1GNzY5MUY0Ny0yMDE0MDMyOV8xMzQxNThfMTc5L3hicmw.xml")

print (response.getcode())

print (response.readline()) # it gets the first line if you need to the check the output
输出:

import urllib
from urllib.request import urlopen
import xml.etree.ElementTree as ET
from io import BytesIO
import gzip
response = urllib.request.urlopen("http://regnskaber.virk.dk/32673592/eGJybHN0b3JlOi8vWC1GNzY5MUY0Ny0yMDE0MDMyOV8xMzQxNThfMT\
c5L3hicmw.xml")
print (response.getcode())

data = response.read()

compdata = BytesIO(data)
text = []
for unit in gzip.GzipFile(fileobj=compdata):
    text.append(unit)
text = b"".join(text)

tree = ET.fromstring(text)
print(tree)
200

@haspander它不是一个bulit-in-one。我对安装或使用这些库有一些限制。@9769953-输出是:b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00=\xd9r\x1b9\x92\xef\x1d\xd1\xffP\xeb\x87\x8d\x99\x08\x89\xe2}=\x8a\x95,\xb9\xc7\xdb\xb6\xe5\xb04\x9e\xddG\x90\x05\x920\x8bU\x1c\x00\xa4\xc5\x0f\xd8Oi\x7f\x83\xdf\xf9c\x9b\x99@\xdd\x07\x8b\x94\xdcR\xefL\x84\xc3\x92X@\XE\XE\XXE\XXE\XXE\XE\XE\XE\XE\XE\XE\XC 7 7 7 7 7 7\X5\X5\X5\X5\XX5\X5\XB\XB\X3\X0\X0\X0\X0\X0\X0\X0\X0\X0\XF\XF\X0\X0\XF\X0\X0\XF\X0\X0\X0\X0\XF\XF\XF\XF\XF\XF\X0 0\X0\X0\X0\X7\X0\X7\X7\X7\X7\X7\X7\X7\X0 0\X7\X7\X7\X7\X7\X7\X7\X7\X7\X7\X7\X7\X7\X7\\x82\xb5\xaf\xdf\x04r\xf9\xd6\x9f\x04Kit不是正确的,我需要XML来解析,将额外/新信息添加到您的问题中,而不是作为注释(不需要注释)。回溯也很有用。但是请看我的其他评论和我的回答。@haspander它不是一个内置的库。我在安装或使用这些库时有一些限制。@9769953-输出是:b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x00\x00=\xd9r\x1b9\x92\xef\x1d\xd1\xfp\xeb\x87\x8d\x99\x08\x89\xe2}=\x8a\x95,\xb9\xc7\xdb\xb6\xe5\xb04\x9e\xddG\x90\x05\x920\x8bU\x1c\x00\xa4\xc5\x0f\xd8Oi\x7f\x83\xdf\xf9c\x9b\x99@\xdd\x07\x8b\x94\xdcR\xefL\x84\xc3\x92X@\XE\XE\XXE\XXE\XXE\XE\XE\XE\XE\XE\XE\XC 7 7 7 7 7 7\X5\X5\X5\X5\XX5\X5\XB\XB\X3\X0\X0\X0\X0\X0\X0\X0\X0\X0\XF\XF\X0\X0\XF\X0\X0\XF\X0\X0\X0\X0\XF\XF\XF\XF\XF\XF\X0 0\X0\X0\X0\X7\X0\X7\X7\X7\X7\X7\X7\X7\X0 0\X7\X7\X7\X7\X7\X7\X7\X7\X7\X7\X7\X7\X7\X7\\x82\xb5\xaf\xdf\x04r\xf9\xd6\x9f\x04Kit不是正确的,我需要XML来解析,将额外/新信息添加到您的问题中,而不是作为注释(不需要注释)。回溯也很有用。但请看我的其他评论和回答。