5 cách để thực hiện yêu cầu HTTP bằng Python – cách thực hiện yêu cầu trong python

Khám phá cách tạo một yêu cầu HTTP đơn giản theo 5 cách khác nhau bằng Python

Bạn đang xem: cách thực hiện yêu cầu trong python

Khi nói đến phát triển phần mềm, hầu như luôn có một số cách khác nhau để đạt được cùng một kết quả. Điều này cũng đúng khi đánh giá một nhóm các gói phần mềm của bên thứ ba. Ví dụ: trong hệ sinh thái Python có hàng nghìn gói liên quan đến việc thực hiện các yêu cầu HTTP . Bạn nên sử dụng cái nào?

Trong hướng dẫn dựa trên thử nghiệm này, chúng tôi sẽ giới thiệu qua các đoạn mã ngắn gọn cho thấy cách thực hiện một yêu cầu GET đơn giản bằng cách sử dụng 5 trong số các gói liên quan đến yêu cầu phổ biến nhất của Python. Chúng tôi sẽ sử dụng API Ảnh thiên văn trong ngày của NASA (được rút ngắn thành APOD trong suốt phần còn lại của hướng dẫn) và mở ảnh của ngày hôm nay trong trình duyệt web của chúng tôi.

Mục tiêu của chúng tôi là thực hiện các yêu cầu GET đơn giản một cách nhanh chóng bằng cách sử dụng nhiều gói Python khác nhau, thay vì so sánh và đối chiếu tất cả các tính năng và sự tinh tế của mỗi gói. Nếu các yêu cầu không đồng bộ phù hợp hơn với trường hợp sử dụng của bạn, hãy xem bài đăng trên blog đi kèm có tên Yêu cầu HTTP không đồng bộ bằng Python với aiohttp và asyncio .

Điều kiện tiên quyết

  • Python 3.6+
  • pip , trình cài đặt gói Python

Tìm khóa API demo của NASA

Điều hướng đến https://api.nasa.gov/ . Bạn sẽ thấy trong phần Xác thực rằng bạn không cần khóa API duy nhất để khám phá tập dữ liệu của NASA. Nếu bạn vẫn muốn tạo một khóa, hãy làm theo hướng dẫn trên trang web và sử dụng khóa API mà bạn được cung cấp thay vì DEMO_KEY mà chúng tôi sẽ sử dụng.

Giới hạn tốc độ cho khóa API demo là 30 yêu cầu mỗi giờ và 50 yêu cầu mỗi ngày, như được giải thích trong phần Giới hạn tốc độ DEMO_KEY của cùng một trang web. Bạn sẽ có thể duy trì tốt trong các giới hạn này khi thực hiện theo cùng với thử nghiệm yêu cầu HTTP của chúng tôi. Phần này của trang web NASA cũng nói rằng chuỗi “DEMO_KEY” có thể được sử dụng thay cho giá trị khóa API thực, vì vậy đó là những gì chúng tôi sẽ sử dụng trong hướng dẫn này.

Định vị điểm cuối URL cho API APOD

URL mà chúng tôi sẽ gửi các yêu cầu HTTP của mình đến là https://api.nasa.gov/planetary/apod , bạn có thể tìm thấy URL này bằng cách cuộn xuống Duyệt qua API của trang web https://api.nasa.gov/ và mở trình đơn APOD thả xuống:

Nếu bạn đọc thông tin ngắn gọn được hiển thị trong trình đơn thả xuống APOD, bạn sẽ thấy rằng điểm cuối này chỉ chấp nhận phương thức GET . Điều này quan trọng vì chúng tôi sẽ chỉ thực hiện một cách cụ thể yêu cầu GET tới điểm cuối cho từng trong số 5 yêu cầu HTTP khác nhau mà chúng tôi sẽ gửi.

Tạo môi trường ảo Python

Tạo một thư mục mới cho dự án này có tên là python-http / ở một vị trí thích hợp trên máy tính của bạn, sau đó điều hướng đến thư mục mới này. Trong ví dụ này, chúng tôi sẽ sử dụng Màn hình của MacBook và tạo tệp từ dòng lệnh.

  $ cd ~ / Máy tính để bàn
$ mkdir python-http
$ cd python-http
 

Tạo một môi trường ảo mới cho dự án này để các phần phụ thuộc chúng tôi cần cài đặt không ảnh hưởng đến thiết lập chung trên máy tính của bạn. Để tạo một môi trường mới có tên là “env”, hãy chạy các lệnh sau trên dòng lệnh:

  $ python3 -m venv env
$ source env / bin / kích hoạt
 

Sau khi tạo nguồn môi trường ảo, bạn sẽ thấy rằng dòng đầu vào của dấu nhắc lệnh của bạn bắt đầu bằng tên của môi trường (“env”). Python đã tạo một thư mục mới có tên là env / trong thư mục python-http /, bạn có thể thấy thư mục này bằng cách chạy lệnh ls trong dấu nhắc lệnh của mình.

Cũng tạo một tệp có tên .gitignore trong thư mục python-http /. Nếu bạn đang sử dụng dòng lệnh trên máy Mac để tạo tệp, đây sẽ là lệnh:

  (env) $ touch .gitignore
 

Mở tệp .gitignore trong trình soạn thảo văn bản bạn chọn, sau đó thêm thư mục env / vào nội dung của tệp .gitignore. Trong khi ở đây, chúng tôi cũng sẽ thêm một dòng cho tệp .env mà chúng tôi sẽ tạo trong phần tiếp theo.

  env /
.env
 

Lưu ý rằng thư mục env / do Python tạo cho môi trường ảo không giống với tệp .env được tạo để lưu trữ bí mật như khóa API và biến môi trường.

Lưu trữ các biến môi trường một cách an toàn

Khóa API là thông tin nhạy cảm và cần được bảo vệ. Do đó, bạn được coi là phương pháp hay nhất để lưu các khóa API dưới dạng các biến môi trường thay vì mã hóa cứng chúng vào ứng dụng của bạn. Chúng tôi sẽ làm theo phương pháp hay nhất này mặc dù giá trị khóa API demo của NASA (“DEMO_KEY”) là kiến ​​thức công khai.

Xem Thêm  Sự kiện thay đổi JavaScript - sự kiện trao đổi trong javascript

Để thực hiện việc này, chúng tôi có thể lưu trữ các khóa API trong tệp .env và liệt kê tệp .env trong tệp .gitignore của chúng tôi (mà chúng tôi đã thực hiện ở trên) để git không theo dõi nó. Tệp .env được sử dụng bất cứ khi nào có các biến môi trường bạn cần cung cấp cho hệ điều hành của mình.

Đầu tiên, hãy tạo tệp .env. Đây là lệnh chạy trên dòng lệnh của Mac:

  (env) $ touch .env
 

Tiếp theo, mở tệp .env trong trình soạn thảo văn bản yêu thích của bạn và thêm dòng sau:

  xuất NASA_API_KEY = DEMO_KEY
 

Nguồn tệp .env để nó có sẵn cho hệ điều hành của bạn, sau đó in giá trị biến môi trường vào bảng điều khiển của bạn để xác nhận rằng nó đã được tạo nguồn thành công:

  (env) $ source .env
(vi) $ echo $ NASA_API_KEY
 

Cài đặt các phụ thuộc Python

Ngoài mô-đun urllib được bao gồm trong thư viện chuẩn Python, các gói Python của bên thứ 3 mà chúng tôi sẽ sử dụng cho thử nghiệm yêu cầu HTTP của mình là:

  • yêu cầu – Dễ dàng là gói phổ biến nhất để đưa ra yêu cầu bằng Python
  • urllib3 – Đừng nhầm với urllib , là một phần của thư viện chuẩn Python
  • httplib2 – Lấp một số khoảng trống do các thư viện khác để lại
  • httpx – Gói mới hơn cung cấp HTTP / 2 và các yêu cầu không đồng bộ

Các phụ thuộc cần thiết cho các dự án Python thường được liệt kê trong một tệp có tên là tests.txt. Tạo một tệp tin request.txt trong thư mục python-http / project:

  (env) $ touch request.txt
 

Sao chép và dán danh sách các gói Python này vào tệp tin request.txt của bạn bằng cách sử dụng trình soạn thảo văn bản ưa thích của bạn:

  yêu cầu
urllib3
httplib2
httpx
 

Cài đặt tất cả các phần phụ thuộc bằng lệnh dưới đây, đảm bảo rằng bạn vẫn có nguồn môi trường ảo (“env”) của mình.

  (env) $ pip install -r Request.txt
 

Tạo tệp Python

Đã đến lúc viết một số mã! Hãy bắt đầu bằng cách tạo tệp Python cho từng mô-đun hoặc gói mà chúng ta sẽ thử nghiệm:

  (env) $ touch use_requests.py
(vi) $ touch use_urllib3.py
(vi) $ touch use_httplib2.py
(vi) $ touch use_httpx.py
(vi) $ touch use_urllib.py
 

Các ví dụ về mã được cung cấp bên dưới cho từng tệp trong số 5 tệp khác nhau mà chúng tôi đã tạo. Bạn cũng có thể xem toàn bộ dự án trong kho lưu trữ GitHub này .

Để làm cho các ví dụ mạnh mẽ và hữu ích hơn một chút, chúng tôi sẽ làm việc với hai mô-đun Python tích hợp có tên là json webbrowser để chúng tôi có thể mở Ảnh thiên văn trong ngày trên trình duyệt web.

Khám phá 5 cách phổ biến để thực hiện yêu cầu HTTP với Python

1/5: Yêu cầu

Gói yêu cầu cho Python phổ biến đến mức nó hiện là yêu cầu trong hơn 1 triệu kho lưu trữ GitHub và đã có gần 600 cộng tác viên cho cơ sở mã của nó trong nhiều năm! Tài liệu rõ ràng và ngắn gọn của gói gần như chắc chắn chịu trách nhiệm cho việc sử dụng rộng rãi.

Sao chép và dán đoạn mã này vào tệp use_requests.py:

  nhập json
nhập hệ điều hành
nhập trình duyệt web

yêu cầu nhập khẩu


nasa_api_key = os.environ.get ('NASA_API_KEY')
api_url = 'https://api.nasa.gov/planetary/apod?api_key={}'.format(nasa_api_key)

def use_requests (api_url):

    response = request.get (api_url)
    json_response = json.loads (response.text)
    photo_url = json_response ['url']
    webbrowser.open_new_tab (photo_url)

    trở về

use_requests (api_url)
 

Trong đoạn mã ví dụ trên, trước tiên, chúng tôi nhập tất cả các mô-đun và gói mà chúng tôi cần. Sau đó, chúng tôi truy xuất khóa API mà chúng tôi đã lưu trữ trong tệp .env (Dòng 8) và chèn nó vào URL mà chúng tôi sẽ gửi yêu cầu GET tới (Dòng 9). Dòng 13 là nơi chúng tôi sử dụng thư viện Yêu cầu và bạn có thể thấy cú pháp đơn giản như thế nào. Sau khi tách URL của ảnh khỏi phản hồi của API, chúng tôi mở nó trong trình duyệt web trên Dòng 16.

Vì một lệnh gọi hàm được bao gồm ở cuối tệp, bạn có thể chạy tệp này và ảnh sẽ tự động mở trong trình duyệt web của bạn! Chạy tệp trong dòng lệnh của bạn để tự thử:

  (env) $ python3 use_requests.py
 

2/5: urllib3

Mặc dù có sự giống nhau về tên, urllib3 là gói của bên thứ 3 và hoàn toàn khác với urllib, là một phần của thư viện chuẩn Python. Có hơn 650.000 kho lưu trữ GitHub liệt kê urllib3 là một yêu cầu khiến nó trở thành một lựa chọn thay thế rất phổ biến cho thư viện Yêu cầu.

Sao chép và dán đoạn mã này vào tệp use_urllib3.py:

  nhập json
nhập hệ điều hành
nhập trình duyệt web

nhập urllib3


nasa_api_key = os.environ.get ('NASA_API_KEY')
api_url = 'https://api.nasa.gov/planetary/apod?api_key={}'.format(nasa_api_key)

def use_urllib3 (api_url):

    http = urllib3.PoolManager ()
    response = http.request ('GET', api_url)
    json_response = json.loads (response.data)
    photo_url = json_response ['url']
    webbrowser.open_new_tab (photo_url)

    trở về

use_urllib3 (api_url)
 

Trong đoạn mã ví dụ trên, trước tiên, chúng tôi nhập tất cả các mô-đun và gói mà chúng tôi cần. Sau đó, chúng tôi truy xuất khóa API mà chúng tôi đã lưu trữ trong tệp .env (Dòng 8) và chèn nó vào URL mà chúng tôi sẽ gửi yêu cầu GET tới (Dòng 9). Trên Dòng 13 và 14, chúng tôi sử dụng gói urllib3, sau đó xử lý phản hồi để trích xuất URL của ảnh và hiển thị trong trình duyệt web.

Xem Thêm  Cách gỡ cài đặt các gói Python - cách gỡ cài đặt một gói trong python

Vì một lệnh gọi hàm được bao gồm ở cuối tệp, bạn có thể chạy tệp này và đảm bảo rằng nó hoạt động.

Mẹo: Nếu bạn gặp lỗi như [SSL: CERTIFICATE_VERIFY_FAILED] xác minh chứng chỉ không thành công: không thể lấy chứng chỉ của tổ chức phát hành địa phương trong khi cố gắng chạy tệp, hãy làm theo các bước trong chuỗi StackOverflow này để giải quyết vấn đề đó.

  (env) $ python3 use_urllib3.py
 

3/5: httplib2

Gói httplib2 là yêu cầu của 86.000 kho lưu trữ GitHub. Việc sử dụng httplib2 kém hơn so với gói Request và urllib3, tuy nhiên, httplib2 lấp đầy một số khoảng trống do hai lựa chọn thay thế được sử dụng rộng rãi hơn để lại. Ví dụ: httplib2 hỗ trợ kết nối liên tục và bộ nhớ đệm.

Dưới đây là một ví dụ đơn giản về cách bạn có thể sử dụng httplib2 trong dự án của mình. Sao chép và dán mã sau vào use_httplib2.py:

  nhập json
nhập hệ điều hành
nhập trình duyệt web

nhập httplib2


nasa_api_key = os.environ.get ('NASA_API_KEY')
api_url = 'https://api.nasa.gov/planetary/apod?api_key={}'.format(nasa_api_key)

def use_httplib2 (api_url):

    http = httplib2.Http ()

    # Phản hồi được gửi dưới dạng bộ gồm 2 mục, với nội dung ở chỉ mục 1
    response = http.request (api_url)
    json_response = json.loads (phản hồi [1])
    photo_url = json_response ['url']
    webbrowser.open_new_tab (photo_url)

    trở về

use_httplib2 (api_url)
 

Trong đoạn mã ví dụ trên, trước tiên, chúng tôi nhập tất cả các mô-đun và gói mà chúng tôi cần. Sau đó, chúng tôi truy xuất khóa API mà chúng tôi đã lưu trữ trong tệp .env (Dòng 8) và chèn nó vào URL mà chúng tôi sẽ gửi yêu cầu GET tới (Dòng 9). Trên Dòng 13 và 16, chúng tôi sử dụng gói httplib2, sau đó xử lý phản hồi để trích xuất URL của ảnh và hiển thị trong trình duyệt web.

Vì một lệnh gọi hàm được bao gồm ở cuối tệp, bạn có thể chạy tệp này và đảm bảo rằng nó hoạt động:

  (env) $ python3 use_httplib2.py
 

4/5: httpx

Gói Python httpx là gói mới nhất trong danh sách của chúng tôi. Nó hỗ trợ giao thức HTTP / 2 yêu cầu không đồng bộ ngoài giao thức HTTP / 1 đồng bộ tiêu chuẩn. Nó được xây dựng để trở nên rất “giống Yêu cầu” và phản ánh rất nhiều mẫu mã có trong gói Yêu cầu (gói đầu tiên mà chúng tôi đề cập).

Để dùng thử httpx, hãy sao chép và dán mã sau vào tệp use_httpx.py:

  nhập json
nhập hệ điều hành
nhập trình duyệt web

nhập httpx


nasa_api_key = os.environ.get ('NASA_API_KEY')
api_url = 'https://api.nasa.gov/planetary/apod?api_key={}'.format(nasa_api_key)

def use_httpx (api_url):

    request = httpx.get (api_url)
    json_request = request.json ()
    photo_url = json_request ['url']
    webbrowser.open_new_tab (photo_url)

    trở về

use_httpx (api_url)
 

Trong mã ví dụ ở trên, trước tiên, chúng tôi nhập tất cả các mô-đun và gói mà chúng tôi cần. Sau đó, chúng tôi truy xuất khóa API mà chúng tôi đã lưu trữ trong tệp .env (Dòng 8) và chèn nó vào URL mà chúng tôi sẽ gửi yêu cầu GET tới (Dòng 9). Dòng 13 là nơi chúng tôi sử dụng thư viện httpx và bạn có thể thấy cú pháp đơn giản như thế nào. Sau khi tách URL của ảnh khỏi phản hồi của API, chúng tôi mở nó trong trình duyệt web trên Dòng 16.

Vì một lệnh gọi hàm được bao gồm ở cuối tệp, bạn có thể chạy tệp này và ảnh sẽ tự động mở trong trình duyệt web của bạn! Chạy tệp trong CLI của bạn để tự thử:

  (env) $ python3 use_httpx.py
 

5/5: urllib

So với mức độ dễ dàng thực hiện các yêu cầu HTTP bằng gói Yêu cầu trong phần trên, việc sử dụng mô-đun urllib tích hợp trong Python phức tạp hơn một chút. Nó yêu cầu sử dụng trình quản lý ngữ cảnh cũng như giải mã phản hồi – hai điều thường được nhà phát triển tóm tắt khi sử dụng một trong các gói trong hướng dẫn của chúng tôi.

Sao chép và dán mã mẫu này vào tệp use_urllib.py:

  nhập json
nhập hệ điều hành
nhập urllib.request
nhập trình duyệt web


nasa_api_key = os.environ.get ('NASA_API_KEY')
api_url = 'https://api.nasa.gov/planetary/apod?api_key={}'.format(nasa_api_key)

def use_urllib (api_url):

    request = urllib.request.Request (api_url)
    với urllib.request.urlopen (yêu cầu) dưới dạng phản hồi:
        data = json.loads (response.read (). decode ("utf-8"))
        photo_url = data ['url']
        webbrowser.open_new_tab (photo_url)

    trở về

use_urllib (api_url)
 

Trong đoạn mã ví dụ trên, trước tiên, chúng tôi nhập tất cả các mô-đun và gói mà chúng tôi cần. Sau đó, chúng tôi truy xuất khóa API mà chúng tôi đã lưu trữ trong tệp .env (Dòng 7) và chèn nó vào URL mà chúng tôi sẽ gửi yêu cầu GET tới (Dòng 8). Trên Dòng 12, chúng tôi tạo đối tượng Yêu cầu bằng mô-đun urllib và trên Dòng 13, chúng tôi sử dụng trình quản lý ngữ cảnh ( with ... ) để gửi yêu cầu đến điểm cuối APOD và lưu phản hồi. Trên Dòng 14, chúng tôi giải mã phản hồi và chuyển đổi nó thành JSON, sau đó trích xuất URL của ảnh và mở nó trong trình duyệt ở Dòng 15 và 16.

Xem Thêm  Thay đổi phông chữ CSS - thay đổi họ phông chữ trong css

Vì một lệnh gọi hàm được bao gồm ở cuối tệp, bạn có thể chạy tệp này và đảm bảo rằng nó hoạt động:

  (env) $ python3 use_urllib.py
 

Xin chúc mừng!

Rất tốt khi thực hiện qua hướng dẫn này! Bạn vừa học cách:

  • Lưu trữ khóa API và các bí mật khác một cách an toàn trong tệp .env
  • Thực hiện yêu cầu GET tới một điểm cuối API theo 5 cách khác nhau
  • Mở hình ảnh từ tập lệnh Python trong trình duyệt web của bạn

Các bước tiếp theo

Để mở rộng thử nghiệm của chúng tôi về việc thực hiện các yêu cầu HTTP theo 5 cách khác nhau bằng Python, bạn có thể:

  • Thử một số gói liên quan đến HTTP liên quan đến yêu cầu khác được liệt kê trong PyPi.
  • Thực hiện một số nghiên cứu của riêng bạn để so sánh ưu và nhược điểm của từng gói được sử dụng trong hướng dẫn này.
  • Chọn một trong các gói mà chúng tôi đã đề cập trong hướng dẫn này và sử dụng tài liệu của nó để tạo các loại yêu cầu HTTP phức tạp hơn, chẳng hạn như một gói sử dụng bộ nhớ đệm.
  • Thử thực hiện các yêu cầu ĐĂNG, NHẤP hoặc XÓA bằng API hỗ trợ các phương pháp này.

Hoặc, xem một số hướng dẫn khác trên blog Twilio để biết ý tưởng về những gì cần xây dựng tiếp theo:

  • Yêu cầu HTTP không đồng bộ bằng Python với aiohttp và asyncio
  • 5 cách thực hiện yêu cầu HTTP trong Node.js
  • Hiển thị Máy chủ Django cục bộ với Internet bằng ngrok

Tôi rất nóng lòng được xem những gì bạn tạo ra!

August là Kỹ sư phần mềm về Nội dung Kỹ thuật trong nhóm Tiếng nói dành cho nhà phát triển của Twilio, chuyên về Python. Cô ấy thích Raspberry Pi, bánh thật và đi dạo trong rừng.

Xếp hạng bài đăng này

Tác giả

  • Allard tháng 8

Người đánh giá

  • Mia Adjei

Bài đăng có Liên quan


Xem thêm những thông tin liên quan đến chủ đề cách thực hiện yêu cầu trong python

Cách dùng câu lệnh lặp FOR trong Python từ A-Z phần 2

  • Tác giả: Gà Python
  • Ngày đăng: 2021-10-29
  • Đánh giá: 4 ⭐ ( 9395 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Cách dùng câu lệnh lặp FOR trong Python từ A-Z phần 1

Cách để Bắt đầu lập trình trên Python

  • Tác giả: www.wikihow.vn
  • Đánh giá: 4 ⭐ ( 5435 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Cách để Bắt đầu lập trình trên Python. Bạn muốn học lập trình? Quá trình làm quen với công việc lập trình có thể khiến bạn nản chí và nghĩ rằng mình cần phải đi học nghiêm túc thì mới làm được. Với một số ngôn ngữ, điều này đôi khi đúng….

Cách tốt nhất để học Python: Học lập trình Python với 8 bước dễ dàng

  • Tác giả: vn.bitdegree.org
  • Đánh giá: 5 ⭐ ( 3648 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn học python: Hãy khám phá cách học lập trình Python với hướng dẫn gồm 8 bước dễ dàng này để học Python một cách hiệu quả nhất

Cách sử dụng Python dự báo lượng truy cập, nhu cầu cho SEO

  • Tác giả: vietmoz.edu.vn
  • Đánh giá: 4 ⭐ ( 1926 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Python dự báo lượng truy cập, nhu cầu cho SEO. Những dự báo này có thể đem lại giá trị lớn trong SEO. Dưới đây là cách nhận được dữ liệu…

Request cơ bản trong python

  • Tác giả: thongthai.work
  • Đánh giá: 4 ⭐ ( 5788 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Cách bắt đầu với Thư viện yêu cầu bằng Python

  • Tác giả: galaxyz.net
  • Đánh giá: 5 ⭐ ( 3690 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong nhiều ứng dụng web, việc kết nối với các dịch vụ của bên thứ ba khác nhau bằng cách sử dụng API là điều bình thường. Khi bạn sử dụng các API này, bạn có thể truy cập vào dữ liệu như thông tin thời tiết, tỷ số thể thao, danh sách phim, tweet, kết quả của công cụ tìm kiếm và hình ảnh. Bạn cũng có thể sử dụng các API để thêm chức năng cho ứng dụng của bạn . Ví dụ về những điều này là thanh toán, lên lịch, email, bản dịch, bản đồ và chuyển file . Nếu bạn tự tạo bất kỳ cái nào trong số đó thì sẽ mất rất nhiều thời gian, nhưng với API, có thể chỉ mất vài phút để kết nối với một cái và truy cập các tính năng và dữ liệu của nó.

Đưa ra yêu cầu bằng Python qua Tor

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 6282 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Đây là mã bạn muốn sử dụng (tải xuống gói gốc bằng cách sử dụng pip…

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình