/ / Základné načítanie HTML HTML tela pomocou Python 3.x - python, url, urllib2

Základné načítavanie telo HTML adresy URL pomocou Pythonu 3.x - python, url, urllib2

Som nováčik Pythonu. Bol som trochu zmätený rozdielmi medzi starou urllib a urllib2 v Pythone 2.x a novou urllib v Pythone 3, a okrem iného som si "nie som istý, kedy dáta musia byť zakódované pred odoslaním do urlopenu.

Snažil som sa priniesť html telo aurl, pomocou POST, aby som mohol odoslať parametre. Webová stránka zobrazuje údaje o slnečnom svite pre danú krajinu za konkrétnu hodinu daného dňa. Snažil som sa bez kódovania / dekódovania a výtlačok je reťazec bajtov s b na začiatku. Kód, ktorý som potom vyskúšal, bol

import urllib.request, urllib.parse, urllib.error

def scrape(someurl):

try:

values = {"LANG": "en",
"DATE" : "1303160400",
"CONT" : "euro",
"LAND" : "UK",
"KEY" : "UK",
"SORT": "2",
"INT" : "06",
"TYPE" : "sonnestd",
"ART" : "karte",
"RUBRIK" : "akt",
"R": "310",
"CEL": "C"}

data = urllib.parse.urlencode(values)
data = data.encode("utf-8")
response = urllib.request.urlopen(someurl, data)
html = response.read().decode("utf-8")
print(html)

except urllib.error.HTTPError as e:
print(e.code)
print(e.read())

myscrape = scrape("http://www.weatheronline.co.uk/weather/maps/current")

Chyba je

Traceback (most recent call last):
File "/Users/Me/Desktop/weather.py", line 57, in <module>
myscrape = scrape("http://www.weatheronline.co.uk/weather/maps/current")
File "/Users/Me/Desktop/weather.py", line 37, in scrape
html = response.read().decode("utf-8")
UnicodeDecodeError: "utf8" codec can"t decode byte 0x80 in position 10: invalid start byte

Bez kódovania / dekódovania dostávam podozrivo krátky reťazec bytov, takže sa čudujem, či žiadosť nie je nejakým iným spôsobom

b"GIF89ax01x00x01x00x80x00x00x00x00x00x00x00x00!xf9x04x01x00x00x00x00,x00x00x00x00x01x00x01x00x00x02x02Dx01x00;"

odpovede:

2 pre odpoveď č. 1

Na GIF89a znamená, že server vám posiela obrázok.

Tiež by ste nemali "dekódovať hrubou silou s utf-8 tak ako tak, mali by ste sa pozrieť na hlavičky odpovedí, aby ste zistili, ktoré kódovanie použiť.