Trình phân tích cURL Python

Lệnh jq có thể được sử dụng để phân tích cú pháp JSON. Tuy nhiên có thể bạn chưa cài đặt jq. Lệnh which có thể được sử dụng để xác định xem jq có trong $PATH của bạn không

which jq

Nếu một cái gì đó như thế này được trả lại, jq không có trong $PATH của bạn, có thể có nghĩa là jq không được cài đặt trên hệ thống của bạn

/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]

Nếu jq chưa được cài đặt và không thể cài đặt được [chẳng hạn như trong môi trường công ty], python có thể được sử dụng để phân tích cú pháp JSON

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng PycURL, đây là giao diện của thư viện cURL trong Python. cURL là một công cụ được sử dụng để truyền dữ liệu đến và từ máy chủ và để thực hiện các loại yêu cầu dữ liệu khác nhau. PycURL rất tuyệt vời để thử nghiệm API REST, tải xuống tệp, v.v. Một số nhà phát triển thích sử dụng Postman để kiểm tra API nhưng PycURL là một tùy chọn phù hợp khác để làm như vậy vì nó hỗ trợ nhiều giao thức như FILE, FTPS, HTTPS, IMAP, POP3, SMTP, SCP, SMB, v.v. Hơn nữa, PycURL có ích khi cần nhiều kết nối đồng thời, nhanh và đáng tin cậy

Như đã đề cập ở trên, PycURL là giao diện của thư viện libcURL trong Python; . PycURL cực kỳ nhanh [được biết là nhanh hơn nhiều so với Yêu cầu, là thư viện Python cho các yêu cầu HTTP], có hỗ trợ đa giao thức và cũng chứa các ổ cắm để hỗ trợ các hoạt động mạng

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

Trước khi bạn tiếp tục với hướng dẫn này, xin lưu ý rằng có một vài điều kiện tiên quyết. Bạn nên có hiểu biết cơ bản về cú pháp của Python và/hoặc ít nhất có kinh nghiệm lập trình cấp độ mới bắt đầu bằng một số ngôn ngữ khác. Hơn nữa, bạn nên hiểu rõ về các khái niệm mạng phổ biến như giao thức và loại của chúng cũng như chế độ giao tiếp máy khách-máy chủ. Làm quen với các khái niệm này là cần thiết để hiểu thư viện PycURL

Cài đặt

Quá trình cài đặt cho PycURL khá đơn giản và dễ hiểu đối với tất cả các hệ điều hành. Bạn chỉ cần cài đặt libcURL trên hệ thống của mình để sử dụng PycURL

Hệ điều hành Mac/Linux

Đối với Mac OS và Linux, cài đặt PycURL là đơn giản nhất vì nó không có phụ thuộc và libcURL được cài đặt theo mặc định. Chỉ cần chạy lệnh sau trong thiết bị đầu cuối của bạn và quá trình cài đặt sẽ hoàn tất

Cài đặt qua pip
$ pip install pycurl 
Cài đặt qua easy_install
$ easy_install pycurl

Hệ điều hành Windows

Tuy nhiên, đối với Windows, có một số phụ thuộc cần được cài đặt trước khi có thể sử dụng PyCURL trong các chương trình của bạn. Nếu bạn đang sử dụng bản phân phối chính thức của Python [i. e. bạn đã tải xuống phiên bản Python từ trang web chính thức https. //www. con trăn. org] cũng như pip, bạn chỉ cần chạy lệnh sau trong dòng lệnh của mình và quá trình cài đặt sẽ hoàn tất

$ pip install pycurl

Nếu bạn không sử dụng trình cài đặt pip, EXE và MSI có sẵn tại PycURL Windows. Bạn có thể tải xuống và cài đặt chúng trực tiếp từ đó, giống như bất kỳ ứng dụng nào khác

Ví dụ mã cơ bản

Trong phần này, chúng tôi sẽ đề cập đến một số ví dụ mã hóa PycURL thể hiện các chức năng khác nhau của giao diện

Như đã đề cập trong phần giới thiệu, PycURL hỗ trợ nhiều giao thức và có rất nhiều tính năng phức tạp. Tuy nhiên, trong các ví dụ của chúng tôi, chúng tôi sẽ làm việc với giao thức HTTP để kiểm tra API REST bằng các phương thức được sử dụng phổ biến nhất của HTTP. GET, POST, PUT và DELETE, cùng với một vài ví dụ khác. Chúng tôi sẽ viết cú pháp để khai báo chúng trong Python 3, cũng như giải thích những gì chúng làm

Vì vậy, hãy bắt đầu

ví dụ 1. Gửi yêu cầu HTTP GET

Một hoạt động mạng đơn giản của PycURL là truy xuất thông tin từ một máy chủ nhất định bằng URL của nó. Đây được gọi là yêu cầu GET vì nó được sử dụng để

$ easy_install pycurl
2 tài nguyên mạng

Một yêu cầu GET đơn giản có thể được thực hiện bằng PycURL bằng cách nhập mô-đun BytesIO và tạo đối tượng của nó. Đối tượng CURL được tạo để truyền dữ liệu và tệp qua URL

URL mong muốn được đặt bằng hàm

$ easy_install pycurl
3, được sử dụng làm
$ easy_install pycurl
4. Tham số
$ easy_install pycurl
5 chỉ định tùy chọn nào sẽ được đặt, e. g.
$ easy_install pycurl
6,
$ easy_install pycurl
7, v.v. và tham số
$ easy_install pycurl
8 chỉ định giá trị được cung cấp cho tùy chọn cụ thể đó

Dữ liệu được lấy từ URL đã đặt sau đó được ghi dưới dạng byte vào đối tượng BytesIO. Các byte sau đó được đọc từ đối tượng BytesIO bằng cách sử dụng hàm

$ easy_install pycurl
9 và sau đó được giải mã để in HTML ra bàn điều khiển

Đây là một ví dụ về cách làm điều này

đầu ra

/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
3

Bạn cũng có thể truy xuất các tiêu đề phản hồi của trang web với sự trợ giúp của PycURL. Các tiêu đề phản hồi có thể được kiểm tra vì một số lý do, chẳng hạn như để tìm ra mã hóa nào đã được gửi cùng với phản hồi và liệu đó có phải là theo mã hóa do máy chủ cung cấp hay không

Trong ví dụ của chúng tôi, chúng tôi sẽ kiểm tra các tiêu đề phản hồi chỉ để tìm ra các tên thuộc tính khác nhau và các giá trị tương ứng của chúng

Để kiểm tra các tiêu đề phản hồi, trước tiên chúng tôi cần trích xuất chúng và chúng tôi thực hiện việc đó bằng cách sử dụng tùy chọn

$ pip install pycurl
0 và hiển thị chúng bằng hàm tự xác định của chúng tôi [trong trường hợp này là
$ pip install pycurl
1]

Chúng tôi cung cấp URL của trang web có tiêu đề phản hồi mà chúng tôi muốn kiểm tra; . Các tiêu đề phản hồi được giải mã theo tiêu chuẩn đã chỉ định và được chia thành các tên và giá trị tương ứng của chúng. Khoảng trắng giữa tên và giá trị bị loại bỏ và sau đó chúng được chuyển đổi thành chữ thường

Các tiêu đề phản hồi sau đó được ghi vào đối tượng BytesIO, được chuyển đến người yêu cầu và cuối cùng được hiển thị ở định dạng phù hợp

đầu ra

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
8

Trong trường hợp chúng tôi có nhiều tiêu đề có cùng tên, chỉ giá trị tiêu đề cuối cùng sẽ được lưu trữ. Để lưu trữ tất cả các giá trị trong các tiêu đề đa giá trị, chúng ta có thể sử dụng đoạn mã sau

/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
9

ví dụ 3. Gửi dữ liệu biểu mẫu qua HTTP POST

Yêu cầu POST là yêu cầu gửi dữ liệu đến máy chủ web bằng cách đặt nó trong phần thân của yêu cầu HTTP. Khi bạn tải tệp lên hoặc gửi biểu mẫu, về cơ bản, bạn đang gửi yêu cầu POST đến máy chủ được chỉ định

Yêu cầu POST có thể được thực hiện bằng PycURL bằng cách trước tiên đặt URL để gửi dữ liệu biểu mẫu tới thông qua chức năng

$ pip install pycurl
4. Dữ liệu cần gửi trước tiên được lưu trữ dưới dạng từ điển [trong các cặp giá trị khóa] và sau đó được mã hóa URL bằng cách sử dụng hàm
$ pip install pycurl
5 có trong mô-đun
$ pip install pycurl
6

Chúng tôi sử dụng tùy chọn

$ pip install pycurl
7 để gửi dữ liệu biểu mẫu vì tùy chọn này tự động đặt phương thức yêu cầu HTTP thành POST và nó cũng xử lý dữ liệu
$ pip install pycurl
8 của chúng tôi

Ghi chú. Nếu bạn muốn chỉ định một phương thức yêu cầu khác, bạn có thể sử dụng tùy chọn

$ pip install pycurl
9 để làm như vậy. Chỉ cần viết tên của phương thức yêu cầu bạn chọn vào dấu phẩy đảo ngược trống sau
/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
30

$ pip install pycurl 
7

Ví dụ 4. Tải tệp lên bằng POST nhiều phần

Có một số cách để bạn có thể sao chép cách tệp được tải lên ở dạng HTML bằng PycURL

  1. Nếu dữ liệu được gửi qua yêu cầu POST nằm trong một tệp trên hệ thống của bạn, trước tiên bạn cần đặt URL nơi bạn muốn gửi dữ liệu. Sau đó, bạn chỉ định phương thức yêu cầu của mình là
    /usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
    31 và sử dụng tùy chọn
    /usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
    32 để tải lên nội dung của tệp mong muốn

Ghi chú. Nếu bạn muốn thay đổi tên và/hoặc loại nội dung của tệp, bạn có thể làm như vậy bằng cách sửa đổi một chút mã trên

  1. Đối với dữ liệu tệp mà bạn có trong bộ nhớ, tất cả những gì thay đổi trong quá trình triển khai yêu cầu POST là
    /usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
    33 và
    /usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
    34 thay cho
    /usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
    35 vì chúng lấy dữ liệu sẽ được đăng trực tiếp từ bộ nhớ
$ easy_install pycurl
3

Ví dụ 5. Tải lên tệp bằng HTTP PUT

Yêu cầu PUT có bản chất tương tự như yêu cầu POST, ngoại trừ thực tế là nó có thể được sử dụng để tải tệp lên trong phần nội dung của yêu cầu. Bạn sử dụng yêu cầu PUT khi bạn biết URL của đối tượng bạn muốn tạo hoặc ghi đè. Về cơ bản, PUT thay thế mọi thứ hiện đang tồn tại tại URL mục tiêu bằng một thứ khác

Nếu dữ liệu mong muốn được tải lên nằm trong một tệp vật lý, trước tiên bạn cần đặt URL mục tiêu, sau đó bạn tải tệp lên và mở tệp đó. Điều quan trọng là tệp phải được mở trong khi đối tượng cURL đang sử dụng nó. Sau đó, dữ liệu được đọc từ tệp bằng cách sử dụng

/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
36

Cuối cùng, quá trình truyền tệp [tải lên] được thực hiện bằng hàm

/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
37 và phiên cURL sau đó kết thúc. Cuối cùng, tệp được mở ban đầu cho đối tượng CURL đã bị đóng

$ easy_install pycurl
6

Nếu dữ liệu tệp nằm trong bộ đệm, thì việc triển khai PycURL gần giống với quá trình tải lên dữ liệu nằm trong tệp vật lý, với một số sửa đổi nhỏ. Đối tượng BytesIO mã hóa dữ liệu bằng tiêu chuẩn đã chỉ định. Điều này là do

/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
36 yêu cầu một đối tượng giống như IO và dữ liệu được mã hóa là điều cần thiết cho Python 3. Dữ liệu được mã hóa đó được lưu trữ trong bộ đệm và bộ đệm đó sau đó được đọc. Quá trình tải lên dữ liệu được thực hiện và sau khi hoàn thành quá trình tải lên, phiên cURL sẽ kết thúc

$ easy_install pycurl
8

Ví dụ 6. Gửi yêu cầu XÓA HTTP

Một phương thức HTTP quan trọng và được sử dụng nhiều khác là DELETE. Phương thức XÓA yêu cầu máy chủ xóa tài nguyên được xác định bởi URL mục tiêu. Nó có thể được triển khai bằng hàm

$ pip install pycurl
9, như có thể thấy trong mẫu mã bên dưới

$ easy_install pycurl
0

Ví dụ 7. Viết vào một tập tin

PycURL cũng có thể được sử dụng để lưu phản hồi vào tệp. Chúng tôi sử dụng hàm

/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
80 để mở tệp và phản hồi được trả về dưới dạng đối tượng tệp. Hàm
/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
80 có dạng.
/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
82. Tham số
/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
83 đại diện cho đường dẫn và tên của tệp sẽ được mở và
/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
84 đại diện cho chế độ mà bạn muốn mở tệp. Trong ví dụ của chúng tôi, điều quan trọng là phải mở tệp ở chế độ nhị phân [i. e.
/usr/bin/which: no jq in [/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/john.doe/bin]
85] để tránh mã hóa và giải mã phản hồi

$ easy_install pycurl
1

Phần kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu về giao diện PycURL trong Python. Chúng tôi bắt đầu bằng cách nói về một số chức năng chung của PycURL và sự liên quan của nó với thư viện libcURL trong Python. Sau đó, chúng tôi đã thấy quá trình cài đặt của PycURL cho các hệ điều hành khác nhau

Cuối cùng, chúng ta đã xem qua một số ví dụ chung của PycURL minh họa các chức năng khác nhau do PycURL cung cấp, như các phương thức HTTP GET, POST, PUT và DELETE. Sau khi làm theo hướng dẫn này, bạn sẽ có thể tìm nạp các đối tượng được xác định bởi một URL trong chương trình Python một cách dễ dàng

Tôi có thể sử dụng curl trong Python không?

Trong Python, cURL chuyển yêu cầu và dữ liệu đến và từ máy chủ bằng PycURL . PycURL hoạt động như một giao diện cho thư viện libcURL trong Python. Hầu hết mọi ngôn ngữ lập trình đều có thể sử dụng API REST để truy cập điểm cuối được lưu trữ trên máy chủ web.

Làm cách nào để đọc đầu ra curl trong Python?

Đây rồi. nhập os outfile='' #đặt đường dẫn tệp của bạn vào đó os. system["curl --head www. Google. com>>{x}". format[x=str[outfile]] # Lệnh xuất ra tệp nhật ký [và tạo tệp nếu tệp không tồn tại] .

Làm cách nào để lấy dữ liệu JSON từ curl Python?

Để nhận JSON bằng Curl, bạn cần phải thực hiện yêu cầu HTTP GET và cung cấp Chấp nhận. tiêu đề yêu cầu ứng dụng/json . Tiêu đề yêu cầu ứng dụng/json được chuyển đến máy chủ với tùy chọn dòng lệnh curl -H và cho máy chủ biết rằng máy khách đang mong đợi phản hồi JSON.

Làm cách nào để chuyển đổi lệnh curl sang Python?

Bạn có thể chuyển đổi các lệnh Curl thành các yêu cầu Python bằng cách sử dụng trình chuyển đổi ReqBin Online Curl thành Python . Trình chuyển đổi Curl sang Python sử dụng Thư viện yêu cầu Python cho mã được tạo. Kiểm tra các lệnh Curl của bạn trực tuyến với ứng dụng khách Curl trực tuyến của chúng tôi và sau đó chuyển đổi cú pháp Curl thành mã Python chỉ bằng một cú nhấp chuột.

Chủ Đề