2017-05-30 4 views
0

Ich habe mehrere URLs mit XML und alles war soweit in Ordnung, aber mit der nächsten URL bekomme ich XML in einem seltsamen Format. Ich verwende für XML von URL bekommen:Parse XML von URL in Python, falsches Format

req = Request("http://www.someUrlWithXml.com", 
        headers={'Connection': 'keep-alive', 
         'Cache-Control': 'max-age=0', 
         'Upgrade-Insecure-Requests': '1', 
         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 
         'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
         'Accept-Encoding': 'gzip, deflate, sdch', 
         'Accept-Language': 'cs,en-GB;q=0.8,en;q=0.6'}) 

    xml = urlopen(req).read() 

Wenn ich drucken variable xml ich einige seltsame Format erhalten:

b'\x1f\x8b\x08\x00\xc7\xf6-Y\x00\xff\xed}{o\x1c9\x92 ... 

In Original-XML ist:

<?xml version="1.0" encoding="utf-8"?> 
<!-- 0 FT--> 
<!-- 1 1st Half--> 
<!-- 2 2nd Half--> 
<!-- 3 1st Quarter--> 
<!-- 4 2nd Quarter--> 
<!-- 5 3rd Quarter--> 
<!-- 6 4th Quarter--> 
<!-- 7 Total Team Goals--> 
<!-- 8 OutRight--> 
<!-- 9 Match Props--> 
<!-- 10 Total Booking In Match--> 
<!-- 11 Red Cards--> 
<!-- 12 First Booking--> 

Antwort

0
b'\x1f\x8b\x08\x00\xc7\xf6-Y\x00\xff\xed}{o\x1c9\x92 ... 

Die b am Anfang der Antwort zeigt an, dass es sich hier um ein Byte-Objekt und nicht um eine Zeichenfolge handelt. Um es als Zeichenfolge zu entschlüsseln, verwenden decode:

xml.decode('utf-8') 
+0

Ich habe versucht, zu dekodieren und jetzt erhalte ich: UnicodeDecodeError: 'utf-8' Codec nicht Byte 0x8B in Position 1 dekodieren kann: ungültige Start-Byte – EdWood

+0

@EdWood: Könnten Sie xml.decode ausprobieren ("utf-8", "ignore") und sehen, ob Ihnen das ein brauchbares Ergebnis bringt? –

+0

Es ist nicht verwendbar, es gibt mir etwas in der Art: .Y} ko9P '"INw8e: N2': -K] [Id% * Vɗnj}) fr: – EdWood