Miért kapok értelmetlen byte-okat? (python3, urllib.request.Request)
Iszonyú kontár vagyok ezen a területen, és csak kísérletezgetek. Eddig nagyjából értettem, hogy mi történt, ha elrontottam valamit, de most megakadtam.
Van egy honlap, ahová Firofox-szal be vagyok jelentkezve. A honlapon navigálva figyeltem a Webfejlesztő eszközzel (shift+control+E), hogy mi történik, és innen származik egy header és egy payload.
Egy python programmal próbáltam reprodukálni a lekérdezést.
A payload b"/?param1=value1@param2=value2" formában van.
A headers egy dictionary.
Ezeket egy az egyben a böngészőből másoltam ki (nyilván olyan formában, ahogy a Request kéri).
Kb. így néz ki a program:
from urllib.request import Request, urlopen
rq = Request(url="honlap címe", data=payload, headers=headers)
resp = urlopen(rq).read()
A resp egy értelmezhetetlen byte folyam, amit nem lehet dekódolni utf8 szerint.
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
A honlap maga utf-8 kódolású, válasznak pedig JSON-t várok.
Mit lehet mindebből kihámozni?
Csak tippelek, nem lehet hogy tömörített adat jön vissza?
Nem tudod beállítani a headerben, hogy az "Accept-Encoding"-ben ne legyen se gzip, se deflate, se br, se semmi? Vagy azt, hogy "Accept-Encoding: identity"?
rq = requests.get(url)
rq.json() -al meg megkapod, json formában a választ, előtte esetleg
rq.headers["content-type"] meg le tuod ellenőrizni esetleg milyen formában kaptál választ.
#1 Mellékeltem hibaüzenetet. Szerinted mi fog kiderülni belőle, ha beírom Google-ba, azon kívül, hogy nem utf8 kódolt a tartalom?
#2 Ez bevált!
#3 Ezzel is megpróbálkozok majd, de egyelőre urllib.request modulnál akarok maradni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!