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 Show 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 HTTPTrong 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 pip install requests Sau đó, chúng tôi nhập >>> import requests >>> url = 'https://place.dog/300/200' >>> # fetch file >>> response = requests.get(url, allow_redirects=True) >>> # Get response status >>> response.status_code 2000 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 = 'https://place.dog/300/200' >>> # fetch file >>> response = requests.get(url, allow_redirects=True) >>> # Get response status >>> response.status_code 2000
Hãy viết một yêu cầu để tìm nạp một tệp bằng 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 2002 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 = 'https://place.dog/300/200' >>> # fetch file >>> response = requests.get(url, allow_redirects=True) >>> # Get response status >>> response.status_code 2003 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ừ APIBâ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 floattrueTruefalseFalsenullNoneBạ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 >>> import requests >>> url = 'https://place.dog/300/200' >>> # fetch file >>> response = requests.get(url, allow_redirects=True) >>> # Get response status >>> response.status_code 2000 và trình đị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 2006 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 = 'https://place.dog/300/200' >>> # fetch file >>> response = requests.get(url, allow_redirects=True) >>> # Get response status >>> response.status_code 2000 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 = 'https://place.dog/300/200' >>> # fetch file >>> response = requests.get(url, allow_redirects=True) >>> # Get response status >>> response.status_code 2006 >>> 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 2009 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) 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. 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 = 'https://place.dog/300/200' >>> # fetch file >>> response = requests.get(url, allow_redirects=True) >>> # Get response status >>> response.status_code 2009 Kết thúc suy nghĩ về cách tải xuống tệp bằng PythonBâ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. |