Hướng dẫn rest api download file python - phần còn lại api tải xuống tệp python

Bạn có biết bạn có thể tải xuống một tệp được lập trình bằng Python không? Tôi sẽ chỉ cho bạn cách tìm nạp và lưu một tệp trong Python. Quá trình này được gọi là cạo web và là một bước thiết yếu của bất kỳ dự án liên quan đến dữ liệu nào.

Quét web là quá trình thu thập dữ liệu từ một trang web. Mặc dù nó có thể được thực hiện thủ công bởi người dùng, nhưng nó thường đề cập đến một phương thức thu thập dữ liệu tự động với sự trợ giúp của trình thu thập thông tin web.

Bạn có thể thực hiện tất cả các chương trình này trong Python. Đến cuối bài viết này, bạn sẽ biết cách tải xuống bất kỳ loại tệp nào trong Python, bao gồm PDFS, hình ảnh, video và trang. Quá trình này tương tự giữa các loại tệp khác nhau.

Để tận dụng tối đa bài viết này, thật tốt khi có một sự hiểu biết cơ bản về lập trình trong Python. Ngoài ra, để tiết kiệm thời gian và tăng tốc học tập của bạn, tôi khuyến khích bạn kiểm tra bản nhạc Python của chúng tôi.

Để tải xuống một tập tin trong Python, chúng ta cần lấy nó và lưu nó. Quá trình này có thể được thực hiện bằng cách gọi API hoặc chỉ với một URL web thông thường chỉ vào GIF bạn thích.

Trước khi đi xa hơn, hãy để hiểu API REST. API REST là một dịch vụ cho phép bạn truy cập và thao tác dữ liệu như tệp văn bản, hình ảnh, dịch vụ và bộ sưu tập các tài nguyên khác trên máy chủ thông qua các cơ chế REST. API giúp cải thiện tính di động của các ứng dụng khách hàng và giảm bớt quá trình phát triển của các thành phần khác nhau của sản phẩm. Các API này thường trả về các đối tượng JSON được mã hóa UTF-8 dưới dạng tài nguyên.

Có hai bước cơ bản để đưa ra yêu cầu khi làm việc với API REST. Đầu tiên, máy khách truy cập một vị trí cụ thể trên API REST và nêu phương thức sẽ được thực thi. Điều này được gọi là một yêu cầu. Thứ hai, máy chủ thực thi phương thức và trả lại dữ liệu cho máy khách. Điều này được gọi là một phản ứng.request. Second, the server executes the method and returns the data to the client. This is known as a response.

Xác thực là một thành phần quan trọng của bảo mật Internet. Bất kỳ API REST nào cho phép khách hàng truy cập hoặc sửa đổi dữ liệu nhạy cảm hoặc quan trọng phải có một hệ thống xác thực. Ngay cả khi API miễn phí, chủ sở hữu có thể giới thiệu xác thực để giới hạn số lượng yêu cầu cho mỗi người dùng.

Đối với hướng dẫn này, chúng tôi sẽ tìm nạp và lưu các tệp trong Python từ Place.dog và Randomfox.ca. Không cần xác thực, vì vậy bạn có thể sử dụng lại đoạn mã để tải xuống một tệp trong Python. Bạn có thể tìm thấy một danh sách các API công khai ở đây.

Đầu tiên, chúng tôi sẽ tải xuống một tệp trong Python qua HTTP. Sau đó, chúng tôi sẽ tải xuống một tệp trong Python từ API. Hãy để ngay với nó!

Tải xuống một tệp trong Python qua HTTP

Trong ví dụ đầu tiên của chúng tôi, chúng tôi sẽ tìm nạp và lưu một bức ảnh của một con chó. Trang web này cung cấp hình ảnh ngẫu nhiên về những con chó bạn có thể sử dụng làm người giữ chỗ cho dự án tiếp theo của bạn. Nếu bạn làm mới trang, nó sẽ tạo ra một bức tranh chó khác.

Chúng tôi sẽ sử dụng thư viện yêu cầu, giúp HTTP yêu cầu đơn giản hơn so với sử dụng thư viện urllib tích hợp. Bạn có thể phải cài đặt thư viện requests với lệnh sau:

pip install requests

Sau đó, chúng tôi nhập requests, đặt biến url với URL mục tiêu của chúng tôi, viết yêu cầu

>>> import requests

>>> url = 'https://place.dog/300/200'

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # Get response status
>>> response.status_code
200
0 và kiểm tra trạng thái của nó. Sau đây là các loại trạng thái phản hồi khác nhau mà bạn có thể phải đối mặt khi viết yêu cầu
>>> import requests

>>> url = 'https://place.dog/300/200'

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # Get response status
>>> response.status_code
200
0:

  • Thông tin 1xx. Nó chỉ ra rằng một yêu cầu đã được nhận và khách hàng nên tiếp tục thực hiện các yêu cầu cho tải trọng dữ liệu.. It indicates that a request has been received and the client should continue to make requests for the data payload.
  • 2xx thành công. Nó chỉ ra một hành động được yêu cầu đã được nhận, hiểu và chấp nhận. Nó giúp bạn xác minh dữ liệu tồn tại trước khi làm việc trên nó.. It indicates a requested action has been received, understood, and accepted. It helps you verify the data exists before working on it.
  • Chuyển hướng 3xx. Nó cho biết khách hàng phải có hành động bổ sung để hoàn thành yêu cầu, chẳng hạn như sử dụng proxy hoặc điểm cuối khác để truy cập các tài nguyên.. It indicates the client must take additional action to complete the request, such as using a proxy or a different endpoint to access the resources.
  • Lỗi máy khách 4xx. Nó chỉ ra các vấn đề với khách hàng, ví dụ, các phương pháp không được phép, các vấn đề ủy quyền, truy cập bị cấm hoặc cố gắng truy cập các tài nguyên không tồn tại.. It indicates problems with the client, for example, disallowed methods, authorization issues, forbidden access, or attempts to access resources that do not exist.
  • Lỗi máy chủ 5xx. Nó chỉ ra các vấn đề với máy chủ cung cấp API.. It indicates problems with the server providing the API.

Hãy để viết một yêu cầu để tìm nạp một tập tin trong Python.

>>> import requests

>>> url = 'https://place.dog/300/200'

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # Get response status
>>> response.status_code
200

Mã trạng thái

>>> import requests

>>> url = 'https://place.dog/300/200'

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # Get response status
>>> response.status_code
200
2 cho biết yêu cầu thành công và dữ liệu tồn tại. Từ đó, chúng tôi tiếp tục bước tiếp theo và lưu một tệp trong Python với sự trợ giúp của phương thức
>>> import requests

>>> url = 'https://place.dog/300/200'

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # Get response status
>>> response.status_code
200
3.

The 200 status code indicates the request is successful and the data exists. From there, we continue to the next step and save a file in Python with the help of the write() method.

Bây giờ, tập tin đã được lưu dưới dạng dog1.jpg và chứa một hình ảnh của một con chó.

Để được bồi dưỡng tốt trên phương thức write () để lưu một tệp trong Python, hãy kiểm tra bài viết của tôi về cách ghi vào tệp trong Python tại đây.

Tải xuống một tệp trong Python từ API

Bây giờ, hãy khám phá cách tìm nạp và lưu một tệp trong Python bằng cách gọi API và phân tích tệp JSON. Trái ngược với những gì chúng tôi đã làm trước đây, chúng tôi sẽ lưu tệp với Pathlib.

Hầu hết các dữ liệu có sẵn trực tuyến đều ở dạng JSON (ký hiệu đối tượng JavaScript). Nó được sử dụng để lưu trữ thông tin trong cơ sở dữ liệu và là loại dữ liệu phổ biến nhất mà bạn sẽ tìm thấy khi làm việc với các API REST hiện đại. Cấu trúc dữ liệu JSON có thể là các cặp giá trị tên không có thứ tự, chẳng hạn như từ điển, bảng băm, đối tượng hoặc danh sách khóa tùy thuộc vào ngôn ngữ lập trình hoặc danh sách các giá trị được đặt hàng như mảng, danh sách và vectơ.unordered name-value pairs, such as dictionaries, hash tables, objects, or keyed lists depending on the programming language, or an ordered list of values such as arrays, lists, and vectors.

JSON có thể khó khăn cho con người đọc và sử dụng trực tiếp. Python có các thư viện khác nhau để giúp chúng tôi đọc dữ liệu JSON được tìm nạp từ web để giải quyết vấn đề này. Trong số đó có thư viện JSON có hỗ trợ tích hợp để chuyển đổi các thành phần JSON thành các đối tượng Python gốc. Bảng sau đây cho thấy ánh xạ chuyển đổi giữa JSON và Python:

JsonPython
sự vậttừ điển
mảngDanh sách hoặc tuple
sợi dâysợi dây
con sốSố nguyên hoặc float
thậtĐÚNG VẬY
saiSai
vô giá trịKhông có

Bạn phải xử lý dữ liệu JSON thường xuyên khi làm việc với API REST. Bạn có thể tìm thêm thông tin về JSON trong khóa học của chúng tôi về cách đọc và viết các tệp JSON bằng Python.

Thư viện requests có nhiều tính năng, nhưng chúng tôi chỉ cần yêu cầu ____10 và định dạng

>>> import requests

>>> url = 'https://place.dog/300/200'

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # Get response status
>>> response.status_code
200
6 cho ví dụ sau. Như chúng tôi đã làm trước đây, bước đầu tiên là nhập thư viện yêu cầu. Sau đó, chúng tôi tạo yêu cầu
>>> import requests

>>> url = 'https://place.dog/300/200'

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # Get response status
>>> response.status_code
200
0 đến điểm cuối API mà chúng tôi muốn truy cập. API cung cấp một đối tượng phản hồi bao gồm dữ liệu JSON. Chúng tôi chỉ quan tâm đến dữ liệu JSON, được trả về với mô -đun
>>> import requests

>>> url = 'https://place.dog/300/200'

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # Get response status
>>> response.status_code
200
6.

>>> import requests

>>> url = "https://randomfox.ca/floof"

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # get json data
>>> json = response.json()
>>> print(json)
{'image': 'https://randomfox.ca/images/2.jpg', 'link': 'https://randomfox.ca/?i=2'}

Đầu ra

>>> import requests

>>> url = 'https://place.dog/300/200'

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # Get response status
>>> response.status_code
200
9 tương tự như từ điển Python. Chúng tôi trích xuất URL của hình ảnh như sau:

>>> img = json['image']
>>> print(img)
https://randomfox.ca/images/2.jpg

Tiếp theo, chúng tôi muốn lưu hình ảnh. Như đã đề cập trước đây, chúng tôi sử dụng

The 200 status code indicates the request is successful and the data exists. From there, we continue to the next step and save a file in Python with the help of the write() method.
0, một khung hướng đối tượng để xử lý các đường dẫn hệ thống tập tin. Một trong những lợi thế của nó là tính di động tốt hơn giữa các hệ điều hành. Bạn có thể tìm thêm thông tin về
The 200 status code indicates the request is successful and the data exists. From there, we continue to the next step and save a file in Python with the help of the write() method.
0 trong bài viết của tôi về cách đổi tên tệp.

Để lưu hình ảnh của Fox của chúng tôi, chúng tôi sẽ sử dụng phương thức path.write_bytes (dữ liệu) để mở đường dẫn trong chế độ nhị phân/byte và ghi dữ liệu vào nó.

>>> # import Path class from pathlib
>>> from pathlib import Path

>>> # define filename
>>> filename = Path('fox.jpg')

>>> # fetch file
>>> response = requests.get(img)

>>> # save file
>>> filename.write_bytes(response.content)

Tệp của chúng tôi hiện đã được lưu là

The 200 status code indicates the request is successful and the data exists. From there, we continue to the next step and save a file in Python with the help of the write() method.
2. Chúng tôi chỉ thấy cách trích xuất URL trong phản hồi API bằng cách kiểm tra dữ liệu
>>> import requests

>>> url = 'https://place.dog/300/200'

>>> # fetch file
>>> response = requests.get(url, allow_redirects=True)

>>> # Get response status
>>> response.status_code
200
9.

Đóng suy nghĩ về cách tải xuống một tập tin trong Python

Bây giờ chúng tôi đã học được cách tải xuống một tệp trong Python qua HTTP và từ API. Tôi khuyến khích bạn chơi với mã và tìm nạp các tệp từ các API khác nhau.

Có rất nhiều điều để tìm hiểu về JSON, đó là một định dạng rộng rãi và tiện dụng để lưu trữ dữ liệu. Bạn có thể tìm thấy thêm về nó và lập trình Python với bản nhạc Python của chúng tôi.

Cuối cùng nhưng không kém phần quan trọng, luôn luôn là một ý tưởng tốt để suy ngẫm về các kỹ năng lập trình Python của bạn. Để giúp bạn trong quá trình này, hãy xem bài viết của tôi về những thứ có thể giúp bạn viết mã Python tốt hơn và duyệt nội dung của chúng tôi trên Refeuenpython.com. Tiếp tục học hỏi mỗi ngày!

Làm cách nào để tải xuống một tệp từ API trong Python?

Để tải xuống một tệp từ URL bằng Python, hãy làm theo ba bước sau:..
Cài đặt mô -đun yêu cầu và nhập nó vào dự án của bạn ..
Sử dụng yêu cầu. Nhận () để tải xuống dữ liệu đằng sau url đó ..
Viết tệp vào tệp trong hệ thống của bạn bằng cách gọi Open () ..

Làm cách nào để tải xuống một tệp từ API REST?

Nhập URL của dịch vụ REST (f.E. http: // localhost: 8080/rest-file-manager/resr/file/upload) Chọn bài viết làm phương thức.Chọn dữ liệu hình thức trong cơ thể.Nhập dưới dạng khóa đính kèm khóa tệp của tệp.

Làm thế nào để bạn tải xuống một tệp văn bản trong Python?

3 cách đơn giản để tải xuống các tập tin với Python.Sử dụng Python để tải xuống các tệp từ Internet là siêu dễ dàng và chỉ có thể sử dụng các chức năng thư viện tiêu chuẩn.Ảnh từ quá mã hóa.....
Urllib.lời yêu cầu.Urlretrieve.....
yêu cầu.Nhận + Lưu thủ công.....
wget.Tải xuống..

Làm cách nào để tải xuống một tập tin từ Python Path?

Một trong những cách đơn giản nhất để tải xuống các tệp trong Python là thông qua mô -đun WGET, điều này không yêu cầu bạn mở tệp đích.Phương thức tải xuống của mô -đun WGET tải xuống các tệp chỉ trong một dòng.Phương thức chấp nhận hai tham số: đường dẫn URL của tệp để tải xuống và đường dẫn cục bộ nơi lưu trữ tệp.via wget module, which doesn't require you to open the destination file. The download method of the wget module downloads files in just one line. The method accepts two parameters: the URL path of the file to download and local path where the file is to be stored.