Kezdőoldal » Számítástechnika » Programozás » Miért kapok értelmetlen...

Ozmium42 kérdése:

Miért kapok értelmetlen byte-okat? (python3, urllib.request.Request)

Figyelt kérdés

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?



2020. máj. 26. 11:57
 1/6 anonim ***** válasza:
61%
Az átlag programozó ilyenkor beírja a hibaüzenetet a googleba. Az első találat a stackoverflow nevű fórumra vezet (ez bizony gyakran elő fog fordulni), ahol az elfogadottnak jelölt választ érdemes megnézni.
2020. máj. 26. 12:01
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
100%

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"?

2020. máj. 26. 12:04
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
100%

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.

2020. máj. 26. 12:10
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

#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.

2020. máj. 26. 12:47
 5/6 anonim ***** válasza:
#1 b+ leírtam mit kéne csinálni, akkor te is láttad volna hogy valószínűleg gzippel kódolt a result. Leszavazgatás helyett gondolkozni kéne...
2020. máj. 26. 14:27
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:
Most azt a választ kellett volna felpontoznom hasznosként, hogy "gugli a barátod"?
2020. máj. 26. 14:57

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!