Witam. Uczę sie pythona od jakiegoś czasu. Mam mały problem z dekodowaniem pobranego pliku csv.
Chciałbym pobrać plik z strony https://www.money.pl/gielda/archiwum/spolki/ w formacie csv. Do wysłania zapytania używam biblioteki urllib.request. Wszystkie dane do wysłania w ciele zapytania są wpisane dobrze, w odpowiedzi dostaje plik .csv. Natomiast jak rozumiem jest on zapisany w bajtach. gdy chcę go dekodować robię to tak jak w przypadku zwracanego pliku html, w którym ten sposób działa:
request = urllib.request.Request("https://www.money.pl/gielda/archiwum/spolki/", data=data, headers=headers)
response = urllib.request.urlopen(request)
file = response.read().decode("utf-8")
Natomiast wyświetla mi error: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb1 in position 12: invalid start byte
Normalnie próbowałem zmienić to na stringa, i za pomocą funkcji strip usunąć znak b', oraz split porozdzielać na poszczególne linie, i wtedy wpisywać wszystko do pliku z znakiem wraz z dodanym znakiem nowej lini na końcu dla każdego wiersza, ale wtedy brak mi polskich znaków.
Mój cały kod wygląd tak:
import urllib.request, urllib.parse
def downoladFile(day_to, format, day_from, symbol,period="0", show="Poka%BF"):
values = {"do": day_to,
"format": format,
"od": day_from,
"period": period,
"show": show,
"symbol": symbol}
data = urllib.parse.urlencode(values).encode("utf-8")
headers = {"user-agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"}
request = urllib.request.Request("https://www.money.pl/gielda/archiwum/spolki/", data=data, headers=headers)
response = urllib.request.urlopen(request)
file = response.read().decode("utf-8")
print(file)
downoladFile("2018-03-15","csv", "2018-02-15", "PLX")
Z góry dzięki za pomoc.