Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

automatisk nedlasting med cookie?


Anbefalte innlegg

Jeg prøver å laste ned automatisk en masse filer fra en side, men har støttet på et problem.

 

Det går greit å bruke Beautiful Soup til å navigere til sidene hvor informasjonen om nedlastingen er, men der stopper det opp.

For å laste ned så trenger jeg Cookie, og PHP SSID virker det som; siden noe jeg tok ut fra nettleseren virker:

wget --header='Host: www.example.com' --header='User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0' --header='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header='Accept-Language: en,en-US;q=0.5' --header='DNT: 1' --header='Referer: https://www.example.com/board.php?bo_table=newsletters&wr_id=10325&sfl=wr_subject&stx=mondays' --header='Cookie: __cfduid=d3181cef717a06059c6bdd43a6d81beb31476742378; PHPSESSID=58ig5rp6i3ho6d7l0cib1kuo83; e1192aefb64683cc97abb83c71057733=dG9ycmVudF9rb3J0dl9lbnQ%3D' --header='Connection: keep-alive' 'https://www.example.com/download.php?bo_table=newsletters&wr_id=10325&no=0&sfl=wr_subject&stx=mondays' -O 'monday.161017.pdf' -c

 

Hva kan jeg bruke for å få informasjonen jeg mangler?

Kanskje noe basert på PhantomJS, eller noe annet?

Det skal skje hodeløst på server.

Lenke til kommentar
Videoannonse
Annonse

Fikk til noe, men pent er det ikke.

 

headers= { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0' }
r = requests.get(url, headers=headers)

wget_call = "wget --header='Host: www.example.com' --header='User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0' --header='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header='Accept-Language: en,en-US;q=0.5' --header='DNT: 1' --header='Referer: https://www.example.com/board.php?bo_table=newsletters&wr_id=10325&sfl=wr_subject&stx=mondays' --header='Cookie: __cfduid=" + r.cookies['__cfduid'] + "; PHPSESSID=" + r.cookies['PHPSESSID'] + "' --header='Connection: keep-alive' 'https://www.example.com/download.php?bo_table=newsletters&wr_id=10325&no=0&sfl=wr_subject&stx=mondays' -O 'monday.161017.pdf' -c

subprocess.call(wget_call, shell=True)
 
Er det andre måter?

 

Hvordan blir jeg kvitt shell=True på denne?

Lenke til kommentar
Jeg prøver å laste ned automatisk en masse filer fra en side, men har støttet på et problem. Det går greit å bruke Beautiful Soup til å navigere til sidene hvor informasjonen om nedlastingen er, men der stopper det opp. For å laste ned så trenger jeg Cookie, og PHP SSID virker det som; siden noe jeg tok ut fra nettleseren virker:

Når det gjelder sånne problem bruker jeg ofte Selenium/PhantomJS,

og sender kilekoden til Beautiful Soup for parsing.

Hvordan blir jeg kvitt Hvordan blir jeg kvitt shell=True på denne?på denne?

Ja ikke bruk shell=True,

Du må dele opp kommandoen i en liste(bruk shlex.split() som hjelp til og dele opp).

Det hadde vel vært mulig skrevet det hele i Requests og droppet wget og subprocess.

 

Du kan se på en post jeg hadde her.

Dette er da et alternativ hvor jeg bruker nettleser(Firefox) egen nedlasting metode igjennom Selenium.

Endret av snippsat
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...