Tải xuống tệp Python

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

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

Bạn có thể thực hiện tất cả những điều này theo chương trình 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 PDF, 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, bạn nên có 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 quá trình học của bạn, tôi khuyến khích bạn kiểm tra khóa học lập trình Python của chúng tôi

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

Trước khi đi xa hơn, hãy hiểu các API REST. API REST là 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ơ chế REST. API giúp cải thiện tính di động của ứng dụng khách 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 làm 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, khách hàng 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. Đây được gọi là yêu cầu. Thứ hai, máy chủ thực thi phương thức và trả về dữ liệu cho máy khách. Điều này được gọi là một phản ứng

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 đều phải có sẵn 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 tệp bằng Python từ vị trí. con chó và con cáo ngẫu nhiên. ca. Không cần xác thực, vì vậy bạn có thể sử dụng lại các đoạn mã để tải xuống tệp bằng Python. Bạn có thể tìm thấy danh sách các API công khai tại đây

Đầu tiên, chúng tôi sẽ tải xuống một tệp bằng Python qua HTTP. Sau đó, chúng tôi sẽ tải xuống một tệp bằng Python từ API. Hãy bắt tay ngay vào vấn đề

Tải xuống tệp bằng 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 ảnh của một con chó. Trang web này cung cấp hình ảnh ngẫu nhiên về những chú chó mà bạn có thể sử dụng làm trình giữ chỗ cho dự án tiếp theo của mình. Nếu bạn làm mới trang, nó sẽ tạo ra một hình ảnh con chó khác

Chúng tôi sẽ sử dụng thư viện yêu cầu, điều này làm cho các yêu cầu HTTP đơn giản hơn so với việc sử dụng thư viện urllib tích hợp. Bạn có thể phải cài đặt thư viện requests bằng 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 một yêu cầu

>>> import requests

>>> url = '//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ể gặp phải khi viết yêu cầu
>>> import requests

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

>>> # fetch file
>>> response = requests.get[url, allow_redirects=True]

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

  • 1xx Thông tin. Nó chỉ ra rằng một yêu cầu đã được nhận và máy khách sẽ tiếp tục thực hiện các yêu cầu đối với tải trọng dữ liệu
  • 2xx thành công. Nó cho biết 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 với nó
  • Chuyển hướng 3xx. Nó cho biết máy khách phải thực hiện thêm hành động để 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 tài nguyên
  • Lỗi máy khách 4xx. Nó chỉ ra các vấn đề với máy khách, ví dụ: các phương pháp không được phép, các vấn đề về ủ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
  • Lỗi máy chủ 5xx. Nó chỉ ra các vấn đề với máy chủ cung cấp API

Hãy viết một yêu cầu để tìm nạp một tệp bằng Python

>>> import requests

>>> url = '//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 = '//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 tệp bằng Python với sự trợ giúp của phương thức
>>> import requests

>>> url = '//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 đã được lưu dưới dạng dog1. jpg và chứa hình ảnh của một con chó

Để xem lại phương pháp write[] để lưu tệp trong Python, hãy xem 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 tệp bằng Python từ API

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

Hầu hết 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 API REST hiện đại. Cấu trúc dữ liệu JSON có thể là các cặp tên-giá trị 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 có khóa tùy thuộc vào ngôn ngữ lập trình hoặc danh sách giá trị có thứ tự như mảng, danh sách và vectơ

Con người có thể khó đọc và sử dụng trực tiếp JSON. 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 hiển thị ánh xạ chuyển đổi giữa JSON và Python

JSONPythonobjectdictionaryarrayList or tuplestringstringnumberInteger or floattrueTruefalseFalsenullNone

Bạn phải thường xuyên xử lý dữ liệu JSON 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à ghi 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

>>> import requests

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

>>> # fetch file
>>> response = requests.get[url, allow_redirects=True]

>>> # Get response status
>>> response.status_code
200
0 và trình định dạng
>>> import requests

>>> url = '//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 ta đã 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 một yêu cầu
>>> import requests

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

>>> # fetch file
>>> response = requests.get[url, allow_redirects=True]

>>> # Get response status
>>> response.status_code
200
0 tới đ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 = '//place.dog/300/200'

>>> # fetch file
>>> response = requests.get[url, allow_redirects=True]

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

>>> import requests

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

>>> # fetch file
>>> response = requests.get[url, allow_redirects=True]

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

Đầu ra

>>> import requests

>>> url = '//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ư một 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]
//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. Một trong những ưu điểm 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 con cáo của chúng ta, chúng ta sẽ sử dụng phương pháp mở đường dẫn ở chế độ nhị phân/byte và ghi dữ liệu vào đó

>>> # 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 dưới 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.
2. Chúng ta vừa xem 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 = '//place.dog/300/200'

>>> # fetch file
>>> response = requests.get[url, allow_redirects=True]

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

Kết thúc suy nghĩ về cách tải xuống tệp bằng Python

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

Còn rất nhiều điều để tìm hiểu về JSON, đây là một định dạng phổ biến và tiện dụng để lưu trữ dữ liệu. Bạn có thể tìm hiểu thêm về nó và lập trình Python với phần lập trình 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 hay để phản ánh 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 qua nội dung của chúng tôi trên LearnPython. com. Không ngừng học hỏi mỗi ngày

Làm cách nào để tải xuống tệp từ URL bằng Python?

Sau đây là các lệnh gọi được sử dụng phổ biến nhất để tải tệp xuống trong python. .
urllib. urlretrieve ['url_to_file', tên_tệp]
urllib2. urlopen['url_to_file']
yêu cầu. lấy [url]
quên đi. tải xuống ['url', tên_tệp]

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

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, ứng dụng khách truy cập vào một vị trí cụ thể trên API REST và nêu phương thức sẽ được thực thi. Đây được gọi là yêu cầu. Thứ hai, máy chủ thực thi phương thức và trả về dữ liệu cho máy khách .

Làm cách nào để sử dụng Wget trong Python?

Để chạy các lệnh Wget từ bên trong tập lệnh Python, bạn sẽ sử dụng phương thức Popen của gói quy trình con . Mỗi khi tập lệnh của bạn gọi popen[] , nó sẽ thực thi lệnh bạn đã truyền trong một phiên bản độc lập của bộ xử lý lệnh của hệ điều hành.

Chủ Đề