Pobrać URL do zawartości pobieranego pliku

Odpowiedz Nowy wątek
2019-05-10 18:11
0

Na stronie https://ivo.gascade.biz/ivo/capacities?9
po ustawieniu tak jak na rysunku:
title
i kliknięciu download pobiera się plik csv.

Jak przechwycić url do tego pliku tak by wywoływać sobie ten URL w pythonie i zapisywać, gdzie mi się podoba?
Wg narzędzi przeglądarkowych po kliknięciu download idzie metoda GET na https://ivo.gascade.biz/ivo/c[...]eType=1&download=Download

ale jak próbuję pobrać zawrtość tego URL to dostaję jakieś śmieci htmlowe...

co ciekawe jak chcę pobrać html strony https://ivo.gascade.biz/ivo/capacities?9 to dostaję `` czyli nic.

edytowany 1x, ostatnio: Julian_, 2019-05-10 18:12

Pozostało 580 znaków

2019-05-10 19:33
0

Masz chrome i developer tools? Moze tak cos...


Pozostało 580 znaków

2019-05-10 20:19
0
lion137 napisał(a):

Masz chrome i developer tools? Moze tak cos...

chrome mi pokazuje ten URL https://ivo.gascade.biz/ivo/c[...]eType=1&download=Download tak jak napisalem powyżej

Pozostało 580 znaków

2019-05-10 20:54
cmd
0

Ehhh Panowie co raz więcej amatorów się pcha, mam nadzieje że przejdzie ta ustawa :P

Jakie przechwycanie URL chcesz robić skoro GET leci z normalnymi query params

https://ivo.gascade.biz/ivo/capacities?reportparameterselect_hf_0=&0-2.IFormSubmitListener-form=&reportparameterselect_hf_0=&9-2.IFormSubmitListener-form=&netpoint=6800&flowDirection=EXIT&from=08%2F05%2F2019&to=06%2F05%2F2021&fileType=1&download=Download&netpoint=6800&flowDirection=EXIT&from=08%2F05%2F2019%3B&to=06%2F05%2F2021%3B&fileType=1&download=Download

Ogarnij wszystkie paramsy co do czego i mozesz sobie sam tego URL przecież generować i robić niezależnego requesta ;)

///edit
przykładowo:
fileType=1 - plik w formacie CSV
fileType=0 - excel (porażka z tym przypisaniem 0, ale już nie będę komentował)

edytowany 2x, ostatnio: cmd, 2019-05-10 20:59

Pozostało 580 znaków

2019-05-10 21:16
0

to weź użyj tego url żeby pobrać plik, bo chyba nie wiesz o co mi chodzi.

W pythonie może coś chrzanię:

import wget
url = "https://ivo.gascade.biz/ivo/capacities?reportparameterselect_hf_0=&0-2.IFormSubmitListener-form=&reportparameterselect_hf_0=&9-2.IFormSubmitListener-form=&netpoint=6800&flowDirection=EXIT&from=08%2F05%2F2019&to=06%2F05%2F2021&fileType=1&download=Download&netpoint=6800&flowDirection=EXIT&from=08%2F05%2F2019%3B&to=06%2F05%2F2021%3B&fileType=1&download=Download"
wget.download(url, 'myfile.csv')

napiszę też w R:

url <- "https://ivo.gascade.biz/ivo/capacities?reportparameterselect_hf_0=&0-2.IFormSubmitListener-form=&reportparameterselect_hf_0=&9-2.IFormSubmitListener-form=&netpoint=6800&flowDirection=EXIT&from=08%2F05%2F2019&to=06%2F05%2F2021&fileType=1&download=Download&netpoint=6800&flowDirection=EXIT&from=08%2F05%2F2019%3B&to=06%2F05%2F2021%3B&fileType=1&download=Download"
download.file(url, dest.file="myfile.csv")

otrzymany w ten sposób csv zawiera śmieci htmlowe, a nie ten plik który pobiera się z downloadem.

edytowany 1x, ostatnio: Julian_, 2019-05-10 21:22
Skopiuj cały adres który wrzuciłem na czerwono w pole adresu przeglądarki i wróć z feedbackiem ;) - cmd 2019-05-10 21:17
napisałem Ci też co robię w pythoine... no jak wrzucisz tę stronę to jest g**no, ale zobacz że jak ustawisz jakieś parametry i klikniesz download to odpala się GET właśnie na tego typu URL, który po wpisaniu do przeglądarki daje g**no. - Julian_ 2019-05-10 21:23

Pozostało 580 znaków

2019-05-10 21:28
cmd
0

@Julian_: Wrzucam tutaj screena, bo coś mnie kłamiesz... ten url wyżej co wrzuciłem zwraca normalnie w przeglądarce validny plik CSV do ściągnięcia.

lololo

edytowany 1x, ostatnio: cmd, 2019-05-10 21:28

Pozostało 580 znaków

2019-05-10 21:42
0
cmd napisał(a):

@Julian_: Wrzucam tutaj screena, bo coś mnie kłamiesz... ten url wyżej co wrzuciłem zwraca normalnie w przeglądarce validny plik CSV do ściągnięcia.

lololo

OK jest, nie zauważyłem, a jak to pythonem pobrać? Tu nie jest coś z ciasteczkami narobione?

nie robiłem w pythonie nigdy, ale SO podpowiada https://stackoverflow.com/que[...]v-file-from-a-url-with-python :D - au7h 2019-05-10 21:48
@au7h: no i to samo, dostaję te śmieci htmlowe zamiast pliku csv... - Julian_ 2019-05-10 21:54
może trzeba jakieś nagłówki powysyłać, przedstawić się jako fejkowy firefox czy cuś - au7h 2019-05-10 22:01

Pozostało 580 znaków

2019-05-10 22:27
cmd
0

@Julian_: Sorki trochę wprowadziłem Cię w błąd, faktycznie tego tak nie pobierzesz, sam URL to za mało.

edytowany 2x, ostatnio: cmd, 2019-05-10 22:27
masz pomysł co dodać i jak? - Julian_ 2019-05-10 22:44
właśnie myślę bo mnie zaintrygowało, cookies i referer to za mało póki co. Faktycznie zwraca te śmieci, ale bankowo musi być coś powiązane z sesją i tym że po wyborze pierwszego pola w formularzu leci dodatkowy request z automatu. - cmd 2019-05-10 22:47

Pozostało 580 znaków

2019-05-10 23:17
cmd

Masz tu działający przykład z użyciem requests ;]

import requests

cookies = {
    'JSESSIONID': 'EF2E036872A64CC162E4BDBA42F458BD',
}

headers = {
    'Connection': 'keep-alive',
    'Pragma': 'no-cache',
    'Cache-Control': 'no-cache',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
    'Referer': 'https://ivo.gascade.biz/ivo/capacities?15',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7',
}

params = (
    ('reportparameterselect_hf_0', ''),
    ('15-3.IFormSubmitListener-form', ''),
    ('netpoint', '2731'),
    ('flowDirection', 'ENTRY'),
    ('from', '02/05/2019'),
    ('to', '08/05/2019'),
    ('fileType', '1'),
    ('download', 'Download'),
)

response = requests.get('https://ivo.gascade.biz/ivo/capacities', headers=headers, params=params, cookies=cookies)

cookies jest wymagane, nie wiem do konca jak z headerami, przepisalem wszystkie jakie mi dev toolsy pokazują

edytowany 1x, ostatnio: cmd, 2019-05-10 23:27
przestało działać, znów śmieci... z tymi kukizami jak sobie radzić? - Julian_ 2019-05-11 00:52
No trzeba ogarnąć najlepiej jakoś obsługę sesji tam jest coś takiego jak requests.Session(), ale dopiero pewnie koło północy mógłbym coś spojrzeć ;p - cmd 2019-05-11 19:37
hm, chyba prościej będzie pojechać z selenium... - Julian_ 2019-05-11 19:41

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0