Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to download a file from a URL which redirects?

I need to download a file using url-->https://readthedocs.org/projects/django/downloads/pdf/latest/

This url redirects to a url with a .pdf file.

How can I download that file with this url using python ?

I've tried :-

import urllib
def download_file(download_url):
    web_file = urllib.urlopen(download_url)
    local_file = open('some_file.pdf', 'w')
    local_file.write(web_file.read())
    web_file.close()
    local_file.close()

if __name__ == 'main':
    download_file('https://readthedocs.org/projects/django/downloads/pdf/latest/')

but this is not working

like image 707
Nitanshu Avatar asked Aug 31 '25 00:08

Nitanshu


1 Answers

import requests
url = 'https://readthedocs.org/projects/django/downloads/pdf/latest/'
r = requests.get(url, allow_redirects=True)  # to get content after redirection
pdf_url = r.url # 'https://media.readthedocs.org/pdf/django/latest/django.pdf'
with open('file_name.pdf', 'wb') as f:
    f.write(r.content)

If you want to download the file from other method or you want to get only final redirected URL you can use requests.head() as shown below:

r = requests.head(url, allow_redirects=True)  # to get only final redirect url
like image 105
Gahan Avatar answered Sep 02 '25 15:09

Gahan