Hướng dẫn python download file from url and save - tập tin tải xuống python từ url và lưu
Tôi mới đến Python và tôi đã trải qua câu hỏi và trả lời trên trang web này, để có câu trả lời cho câu hỏi của tôi. Tuy nhiên, tôi là người mới bắt đầu và tôi cảm thấy khó hiểu một số giải pháp. Tôi cần một giải pháp rất cơ bản. Ai đó có thể vui lòng giải thích một giải pháp đơn giản để 'tải xuống tệp thông qua HTTP' và 'Lưu nó vào đĩa, trong Windows', cho tôi không? Tôi cũng không chắc làm thế nào để sử dụng các mô -đun SHOTIL và HĐH. Tệp tôi muốn tải xuống dưới 500 MB và là tệp lưu trữ .gz. Nếu ai đó có thể giải thích cách trích xuất kho lưu trữ và sử dụng các tệp trong đó, điều đó cũng rất tuyệt! Đây là một giải pháp một phần mà tôi đã viết từ các câu trả lời khác nhau kết hợp:
Ai đó có thể chỉ ra lỗi (cấp độ mới bắt đầu) và giải thích bất kỳ phương pháp nào dễ dàng hơn để thực hiện điều này? Thanks! Python cung cấp các mô -đun khác nhau như urllib, yêu cầu vv để tải xuống các tệp từ web. Tôi sẽ sử dụng thư viện yêu cầu của Python để tải xuống các tệp một cách hiệu quả từ các URL. Hãy bắt đầu xem xét thủ tục từng bước để tải xuống các tệp bằng URL bằng thư viện yêu cầu - 1. Nhập mô -đunimport requests 2. Nhận liên kết hoặc URLurl = 'https://www.facebook.com/favicon.ico' r = requests.get(url, allow_redirects=True) 3. Lưu nội dung với tên.open('facebook.ico', 'wb').write(r.content) Lưu tệp dưới dạng Facebook.ICO. Thí dụimport requests url = 'https://www.facebook.com/favicon.ico' r = requests.get(url, allow_redirects=True) open('facebook.ico', 'wb').write(r.content) Kết quảChúng ta có thể thấy tệp được tải xuống (biểu tượng) trong thư mục làm việc hiện tại của chúng tôi. Nhưng chúng ta có thể cần tải xuống các loại tệp khác nhau như hình ảnh, văn bản, video, vv từ web. Vì vậy, trước tiên, hãy để có được loại dữ liệu mà URL đang liên kết đến− >>> r = requests.get(url, allow_redirects=True) >>> print(r.headers.get('content-type')) image/png Tuy nhiên, có một cách thông minh hơn, liên quan đến việc tìm kiếm các tiêu đề của một URL trước khi thực sự tải xuống nó. Điều này cho phép chúng tôi bỏ qua việc tải xuống các tệp mà người sói có nghĩa là sẽ được tải xuống. >>> print(is_downloadable('https://www.youtube.com/watch?v=xCglV_dqFGI')) False >>> print(is_downloadable('https://www.facebook.com/favicon.ico')) True Để hạn chế tải xuống theo kích thước tệp, chúng tôi có thể lấy FileZie từ tiêu đề độ dài nội dung và sau đó thực hiện theo yêu cầu của chúng tôi. contentLength = header.get('content-length', None) if contentLength and contentLength > 2e8: # 200 mb approx return False Nhận tên tệp từ một urlĐể có được tên tệp, chúng ta có thể phân tích URL. Dưới đây là một thói quen mẫu lấy chuỗi cuối cùng sau khi chao đảo (/). url= "http://www.computersolution.tech/wp-content/uploads/2016/05/tutorialspoint-logo.png" if url.find('/'): print(url.rsplit('/', 1)[1] Trên đây sẽ cung cấp tên tệp của URL. Tuy nhiên, có nhiều trường hợp thông tin tệp không có trong URL chẳng hạn - http://url.com/doad. Trong trường hợp như vậy, chúng ta cần phải có tiêu đề xử lý nội dung, chứa thông tin tên tệp. import requests import re def getFilename_fromCd(cd): """ Get filename from content-disposition """ if not cd: return None fname = re.findall('filename=(.+)', cd) if len(fname) == 0: return None return fname[0] url = 'http://google.com/favicon.ico' r = requests.get(url, allow_redirects=True) filename = getFilename_fromCd(r.headers.get('content-disposition')) open(filename, 'wb').write(r.content) Mã phân tích URL trên kết hợp với chương trình trên sẽ cung cấp cho bạn tên tệp từ tiêu đề xử lý nội dung hầu hết thời gian.
Cập nhật vào ngày 30 tháng 3 năm 2019 22:30:26
|