Hướng dẫn python request file name - tên tệp yêu cầu python
Theo tài liệu, cả 4 và thuộc tính 5 của nó đều không cần thiết. Ngoài ra, tôi đã kiểm tra hàng chục liên kết trên internet và không tìm thấy phản hồi với tiêu đề 4. Vì vậy, trong hầu hết các trường hợp, tôi sẽ không dựa vào nó nhiều và chỉ lấy thông tin này từ URL yêu cầu (lưu ý: Tôi đang lấy nó từ 7 vì có thể có chuyển hướng và chúng tôi muốn lấy tên tệp thực). Tôi đã sử dụng 8 bởi vì nó trông mạnh mẽ hơn và xử lý các tên tệp được trích dẫn và chưa được trích dẫn. Cuối cùng, tôi đã đưa ra giải pháp này (hoạt động từ Python 3.8):
Tôi đã viết một số bài kiểm tra bằng cách sử dụng 9 và import urllib import os output_dir = '/tmp' image_url = 'https://vinasupport.com/assets/img/vinasupport_logo.png' # Make output directory if not exist if not os.path.exists(output_dir): os.makedirs(output_dir) # save path image_save_path = output_dir + '/' + os.path.basename(image_url) # Download file from url urllib.request.urlretrieve(image, image_save_path) print(image_save_path)0: Bạn có thể download file (File ảnh, File text, …) từ 1 đường dẫn trên web sử dụng thư viện urllib của Python 3. Đoạn source code Python 3 như sau: import urllib import os output_dir = '/tmp' image_url = 'https://vinasupport.com/assets/img/vinasupport_logo.png' # Make output directory if not exist if not os.path.exists(output_dir): os.makedirs(output_dir) # save path image_save_path = output_dir + '/' + os.path.basename(image_url) # Download file from url urllib.request.urlretrieve(image, image_save_path) print(image_save_path) Trong ví dụ trên, mình thực hiện download file ảnh có đường dẫn là: https://vinasupport.com/assets/img/vinasupport_logo.png Và lưu nó xuống dường dẫn trên server /tmp/vinasupport_logo.png Một cách khác là sử dụng thư viện requests Đầu tiên cài đặt requests thông qua trình quản lý module / packages của Python 3 pip install requests Sử dụng requests để download file: from requests import get # to make GET request def download(url, file_name): # open in binary mode with open(file_name, "wb") as file: # get request response = get(url) # write to file file.write(response.content) Nguồn: vinasupport.com Python provides different modules like urllib, requests etc to download files from the web. I am going to use the request library of python to efficiently download files from the URLs. Let’s start a look at step by step procedure to download files using URLs using request library− 1. Import moduleimport requests 2. Get the link or urlurl = 'https://www.facebook.com/favicon.ico' r = requests.get(url, allow_redirects=True) 3. Save the content with name.open('facebook.ico', 'wb').write(r.content) save the file as facebook.ico. Exampleimport requests url = 'https://www.facebook.com/favicon.ico' r = requests.get(url, allow_redirects=True) open('facebook.ico', 'wb').write(r.content) ResultWe can see the file is downloaded(icon) in our current working directory. But we may need to download different kind of files like image, text, video etc from the web. So let’s first get the type of data the url is linking to− >>> r = requests.get(url, allow_redirects=True) >>> print(r.headers.get('content-type')) image/png However, there is a smarter way, which involved just fetching the headers of a url before actually downloading it. This allows us to skip downloading files which weren’t meant to be downloaded. 0To restrict the download by file size, we can get the filezie from the content-length header and then do as per our requirement. 1Get filename from an URLTo get the filename, we can parse the url. Below is a sample routine which fetches the last string after backslash(/). 2Above will give the filename of the url. However, there are many cases where filename information is not present in the url for example – http://url.com/download. In such a case, we need to get the Content-Disposition header, which contains the filename information. 3 The above url-parsing code in conjunction with above program will give you filename from Content-Disposition header most of the time. Updated on 30-Jul-2019 22:30:26
|