Hướng dẫn how do i download a text file from a url in python? - làm cách nào để tải xuống tệp văn bản từ url trong python?

Chỉnh sửa 09/2016: Trong Python 3 và UP Sử dụng urllib.request thay vì urllib2

Trên thực tế, cách đơn giản nhất là:

import urllib2  # the lib that handles the url stuff

data = urllib2.urlopen(target_url) # it's a file like object and works just like a file
for line in data: # files are iterable
    print line

Bạn thậm chí không cần "đọc lại", như đã đề xuất. Bạn thậm chí có thể rút ngắn nó thành: *

import urllib2

for line in urllib2.urlopen(target_url):
    print line

Nhưng hãy nhớ trong Python, vấn đề dễ đọc.

Tuy nhiên, đây là cách đơn giản nhất nhưng không phải là cách an toàn vì hầu hết thời gian với lập trình mạng, bạn không biết liệu lượng dữ liệu mong đợi có được tôn trọng hay không. Vì vậy, bạn thường đọc tốt hơn một lượng dữ liệu cố định và hợp lý, một cái gì đó bạn biết là đủ cho dữ liệu bạn mong đợi nhưng sẽ ngăn chặn kịch bản của bạn bị ngập lụt:

import urllib2

data = urllib2.urlopen("http://www.google.com").read(20000) # read only 20 000 chars
data = data.split("\n") # then split it into lines

for line in data:
    print line

* Ví dụ thứ hai trong Python 3:

import urllib.request  # the lib that handles the url stuff

for line in urllib.request.urlopen(target_url):
    print(line.decode('utf-8')) #utf-8 or iso8859-1 or whatever the page encoding scheme is


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ô -đun

import requests

2. Nhận liên kết hoặc URL

url = '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ả

Hướng dẫn how do i download a text file from a url in python? - làm cách nào để tải xuống tệp văn bản từ url trong python?

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.

import urllib2

for line in urllib2.urlopen(target_url):
    print line
0

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 (/).

import urllib2

for line in urllib2.urlopen(target_url):
    print line
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 urllib2

for line in urllib2.urlopen(target_url):
    print line
2

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.

Hướng dẫn how do i download a text file from a url in python? - làm cách nào để tải xuống tệp văn bản từ url trong python?

Cập nhật vào ngày 30 tháng 3 năm 2019 22:30:26

  • Câu hỏi và câu trả lời liên quan
  • Tải xuống tệp bằng trình kết nối SAP .NET
  • Làm thế nào các tệp được trích xuất từ một tệp tar bằng Python?
  • Đổi tên nhiều tệp bằng Python
  • Sử dụng dịch vụ web SAP từ tệp WSDL
  • Web Scraping bằng Python và Scracy?
  • Python thực hiện quét web bằng LXML
  • Làm thế nào để sao chép các tệp từ thư mục này sang thư mục khác bằng Python?
  • Làm thế nào để sao chép các tệp từ máy chủ này sang máy chủ khác bằng Python?
  • Làm thế nào để chuyển đổi các tệp PDF sang các tệp Excel bằng Python?
  • Làm thế nào để sao chép một số tệp nhất định từ thư mục này sang thư mục khác bằng Python?
  • Thực hiện quét web bằng LXML trong Python?
  • HTML5 có cho phép bạn tương tác với các tệp máy khách cục bộ từ trong trình duyệt web không?
  • Tạo các tệp và thư mục tạm thời bằng cách sử dụng Python
  • Làm thế nào để xóa các tệp hoán đổi bằng Python?
  • Cách tạo các tệp PowerPoint bằng Python