2017-05-29 9 views
-3

Dies ist ein Code von einer Get-Anfrage von einem Server zur Verfügung gestellt. Wie ich sehen kann, ist es mit gzip verschlüsselt, jetzt muss ich einen sauberen HTML-Code haben.Wie HTML-Code mit Python zu decodieren

Beispiel:

{"Html":"\u003cdiv class=\"panel-body\"\u003e\r\n  \u003cdiv class=\"printContainer\"\u003e\r\n   \u003ca href=\"#\" data-itemid=\"237994\" data-toggle=\"tooltip\" data-placement=\"top\" data-action=\"printProductInfo\" accesskey=\"p\" rel=\"nofollow\"\u003e\r\n    \u003cspan class=\"nonIcon printIcon\"\u003e\u003c/span\u003e\u0026nbsp;Skriv ut\r\n   \u003c/a\u003e\r\n  \u003c/div\u003e\r\n \u003ctable class=\"table table-striped\"\u003e\r\n      \u003ctr class=\"info\"\u003e\r\n     \u003cth colspan=\"2\" class=\"plCategoryHeader\" style=\"margin-top: 0\"\u003e\r\n      Allm\u0026#228;nt\r\n     \u003c/th\u003e\r\n    \u003c/tr\u003e\r\n    \u003ctr\u003e\r\n     \u003ctd class=\"plHeader\"\u003e\r\n      Tillv. art. nr.\r\n     \u003c/td\u003e\r\n     \u003ctd class=\"plValue\"\u003e\r\n      T3M78AA#ABB\r\n     \u003c/td\u003e\r\n    \u003c/tr\u003e\r\n    \u003ctr\u003e\r\n     \u003ctd class=\"plHeader\"\u003e\r\n 
+0

Ist der von der Registerkarte "Get Request" bereitgestellte Code begrenzt? –

+0

Ja ist es, mit {} –

+1

, wie es mit gzip zusammenhängt? Es sieht eher wie JSON-Objekt aus – varela

Antwort

-2
response = '{"Html":"\u003cdiv class=\"panel-body\"\u003e\r\n  \u003cdiv class=\"printContainer\"\u003e\r\n   \u003ca href=\"#\" data-itemid=\"237994\" data-toggle=\"tooltip\" data-placement=\"top\" data-action=\"printProductInfo\" accesskey=\"p\" rel=\"nofollow\"\u003e\r\n    \u003cspan class=\"nonIcon printIcon\"\u003e\u003c/span\u003e\u0026nbsp;Skriv ut\r\n   \u003c/a\u003e\r\n  \u003c/div\u003e\r\n \u003ctable class=\"table table-striped\"\u003e\r\n      \u003ctr class=\"info\"\u003e\r\n     \u003cth colspan=\"2\" class=\"plCategoryHeader\" style=\"margin-top: 0\"\u003e\r\n      Allm\u0026#228;nt\r\n     \u003c/th\u003e\r\n    \u003c/tr\u003e\r\n    \u003ctr\u003e\r\n     \u003ctd class=\"plHeader\"\u003e\r\n      Tillv. art. nr.\r\n     \u003c/td\u003e\r\n     \u003ctd class=\"plValue\"\u003e\r\n      T3M78AA#ABB\r\n     \u003c/td\u003e\r\n    \u003c/tr\u003e\r\n    \u003ctr\u003e\r\n     \u003ctd class=\"plHeader\"\u003e\r\n"}' 
print(response.encode('utf-8')) 
# prints: b'{"Html":"<div class="panel-body">\r\n  <div class="printContainer">\r\n   <a href="#" data-itemid="237994" data-toggle="tooltip" data-placement="top" data-action="printProductInfo" accesskey="p" rel="nofollow">\r\n    <span class="nonIcon printIcon"></span>&nbsp;Skriv ut\r\n   </a>\r\n  </div>\r\n <table class="table table-striped">\r\n      <tr class="info">\r\n     <th colspan="2" class="plCategoryHeader" style="margin-top: 0">\r\n      Allm&#228;nt\r\n     </th>\r\n    </tr>\r\n    <tr>\r\n     <td class="plHeader">\r\n      Tillv. art. nr.\r\n     </td>\r\n     <td class="plValue">\r\n      T3M78AA#ABB\r\n     </td>\r\n    </tr>\r\n    <tr>\r\n     <td class="plHeader">\r\n"}' 

Oder noch einfacher, für diese spezifische Antwort:

response = '{"Html":"\u003cdiv class=\"panel-body\"\u003e\r\n  \u003cdiv class=\"printContainer\"\u003e\r\n   \u003ca href=\"#\" data-itemid=\"237994\" data-toggle=\"tooltip\" data-placement=\"top\" data-action=\"printProductInfo\" accesskey=\"p\" rel=\"nofollow\"\u003e\r\n    \u003cspan class=\"nonIcon printIcon\"\u003e\u003c/span\u003e\u0026nbsp;Skriv ut\r\n   \u003c/a\u003e\r\n  \u003c/div\u003e\r\n \u003ctable class=\"table table-striped\"\u003e\r\n      \u003ctr class=\"info\"\u003e\r\n     \u003cth colspan=\"2\" class=\"plCategoryHeader\" style=\"margin-top: 0\"\u003e\r\n      Allm\u0026#228;nt\r\n     \u003c/th\u003e\r\n    \u003c/tr\u003e\r\n    \u003ctr\u003e\r\n     \u003ctd class=\"plHeader\"\u003e\r\n      Tillv. art. nr.\r\n     \u003c/td\u003e\r\n     \u003ctd class=\"plValue\"\u003e\r\n      T3M78AA#ABB\r\n     \u003c/td\u003e\r\n    \u003c/tr\u003e\r\n    \u003ctr\u003e\r\n     \u003ctd class=\"plHeader\"\u003e\r\n"}' 
print(response[9:-2]) 

Die zweite Art und Weise auch alle Zeilenumbrüche gedruckt werden, so dass Sie einen gültigen zu haben, schön formatiert HTML.

+0

Es funktioniert mit dem ersten, nur würde ich es gerne in python2 verwenden und wie ich sehe, funktioniert es nur mit python3. –

+0

Für Python 2.7 nur importieren Unicode_Literals: 'von __future__ import unicode_literals' Und der Code wird das gleiche funktionieren. –

+1

In dieser Antwort wird davon ausgegangen, dass die Unicode-Escape-Sequenzen Teil der Python-Zeichenfolge sind (und vom Python-Parser beim Interpretieren des Zeichenfolgenliterals interpretiert werden), wenn das Beispiel in der Frage so aussieht, als sei es Teil der rohen JSON-Antwort . Also wird diese Antwort nicht wirklich schneiden. Besonders wenn man sich den analysierten 'response' String anschaut, sieht man, dass der' encode() 'Aufruf nicht wirklich etwas mit der Zeichenkette macht, außer sie in ein' bytes' Objekt umzuwandeln (was sowieso völlig unerwünscht sein könnte !?). – poke

Verwandte Themen