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["//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 = '//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 = '//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['//www.youtube.com/watch?v=xCglV_dqFGI']] False >>> print[is_downloadable['//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
0Nhậ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
1Trê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 - //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
2Mã 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
- 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