Search on blog:

Python: Jak pobrać PDF z US Department of Commerce używając requests.

Na stronie

https://232app.azurewebsites.net/Forms/ExclusionRequestItem/800

znajduje się przycisk "View attachment file", który pozwala ściągnąć PDF.

Problem jest, że ten przycisk nie ma href z bezpośrednim linkiem do PDF ale on używa JavaScript do jego pobrania.

Pierswsza pomysł to użyć[Selenium](https://selenium-python.readthedocs.io/) aby to pobrać ale używając DevTools (zakładka: Network, opcja: Presist Logs) w Firefox można zobaczyć, że ten przycisk wysyła zapytanie pod adres

https://232app.azurewebsites.net/Forms/ExclusionRequestItem/800?handler=DownloadDM&ID=800

i dostaje dane JSON z "downloadURL", który zawiera link do PDF.

Tak więc używając requests z pierwszym adrese można pobrać dane JSON z linkiem do PDF a potem można użyć ponownie requests do pobrania PDF.

import requests
import webbrowser

number = 800

url = f'https://232app.azurewebsites.net/Forms/ExclusionRequestItem/{number}?handler=DownloadDM&ID={number}'

r = requests.get(url)
data = r.json()
print('url:', data["downloadURL"])

filename = f'output-{number}.pdf'

r = requests.get(data["downloadURL"])
with open(filename, 'wb') as fh:
    fh.write(r.content)

# open PDF in default program
webbrowser.open(filename)

Używając innej liczby niż 800 można pobrać PDF z innych stron.


If you like it
Buy a Coffee