Làm cách nào để bạn chuyển nội dung trong yêu cầu đăng bài trong python?

Yêu cầu POST là một loại phương thức HTTP cụ thể được sử dụng khi chúng tôi gửi dữ liệu đến các dịch vụ trên web. Chúng tôi sử dụng chúng trên các trang web sử dụng biểu mẫu - khi chúng tôi đăng nhập, khi chúng tôi gửi tin nhắn hoặc đăng hình ảnh. Các ứng dụng cũng sử dụng các yêu cầu POST để tương tác với các dịch vụ khác để gửi dữ liệu với JSON là định dạng dữ liệu phổ biến để trao đổi

Thư viện

import requests
import json

r = requests.post["//httpbin.org/post", 
    data={"key": "value"},
]
1 là một trong những thư viện máy khách HTTP phổ biến nhất cho Python. Nó hiện có hơn 45 nghìn sao trên Github, với số lượt tải xuống trên PyPI là 115 triệu mỗi tháng. Nó làm cho việc gửi các yêu cầu POST theo chương trình đơn giản hơn nhiều so với việc phải gửi dữ liệu qua trình duyệt không đầu. Với một trình duyệt không đầu, chúng tôi cần viết các tập lệnh để điều hướng đến một trang web, di chuyển giữa các trường, điền dữ liệu mong muốn vào từng trường trước khi gửi dữ liệu cuối cùng. Bằng cách gửi yêu cầu POST, chúng tôi chuyển thẳng đến bước gửi cuối cùng. Yêu cầu cũng là một thư viện nhỏ hơn rất nhiều so với trình duyệt dẫn đến hiệu suất và mức sử dụng bộ nhớ tốt hơn

Trong bài viết này, chúng tôi sẽ đề cập đến cách xây dựng một yêu cầu POST bằng cách sử dụng Yêu cầu và cách nó có thể làm cho quy trình trở nên đơn giản hơn nhiều đối với chúng tôi

Xây dựng một yêu cầu POST JSON với các yêu cầu

  • 1. Đặt Phương thức Yêu cầu thành POST
  • 2. Đặt dữ liệu POST
  • 3. Đặt tiêu đề POST
  • 4. POST dữ liệu JSON

Ví dụ, hãy bắt đầu bằng cách xây dựng một yêu cầu JSON POST một cách khó khăn. Đừng lo lắng Yêu cầu sẽ đơn giản hóa điều này cho chúng tôi sau. Chúng tôi đang sử dụng httpbin. org, trả về phản hồi JSON nêu chi tiết nội dung đã được gửi

1. Đặt Phương thức Yêu cầu thành POST

Các yêu cầu có thiết kế dựa trên động từ HTTP thực sự đơn giản, nghĩa là để nhận được phản hồi, chúng tôi gọi đó là. phương thức post[] cung cấp URI của chúng tôi làm đối số. Nó cũng cung cấp các phương thức tương tự cho các yêu cầu GET, PUT và PATCH

import requests

r = requests.post["//httpbin.org/post"]

2. Đặt dữ liệu POST

Để thực sự gửi một số dữ liệu, chúng tôi cung cấp một đối số dữ liệu. Theo mặc định, dữ liệu được gửi bằng cách sử dụng dưới dạng biểu mẫu HTML như chúng tôi sẽ nhận được bằng cách gửi bất kỳ biểu mẫu nào trên web. Yêu cầu đặt loại nội dung thành 'application/x-www-form-urlencoded', vì vậy không cần đặt bất kỳ tiêu đề nào

import requests
import json

r = requests.post["//httpbin.org/post", 
    data={"key": "value"},
]

Kiểm tra phản hồi từ httpbin. org, chúng ta có thể thấy những gì đã được gửi dưới dạng dữ liệu biểu mẫu trong khóa "biểu mẫu"

>>> r.text
'{\n  "args": {}, \n  "data": "", \n  "files": {}, \n  "form": {\n    "key": "value"\n  }, \n  "headers": {\n    "Accept": "*/*", \n    "Accept-Encoding": "gzip, deflate", \n    "Content-Length": "9", \n    "Content-Type": "application/x-www-form-urlencoded", \n    "Host": "httpbin.org", \n    "User-Agent": "python-requests/2.25.1", \n    "X-Amzn-Trace-Id": "Root=1-60df1a04-0384d3ce7d9ac00b5855064b"\n  }, \n  "json": null, \n  "origin": "**.***.**.***", \n  "url": "//httpbin.org/post"\n}\n'

Nếu chúng tôi muốn gửi JSON, chúng tôi có thể cung cấp một chuỗi có định dạng JSON. Trong ví dụ của chúng tôi, chúng tôi đang sử dụng mô-đun

import requests
import json

r = requests.post["//httpbin.org/post", 
    data={"key": "value"},
]
0 để chuyển đổi từ điển thành chuỗi có định dạng JSON sẵn sàng để gửi

import requests
import json

r = requests.post["//httpbin.org/post", 
    data=json.dumps[{"key": "value"}],
]

3. Đặt tiêu đề POST

Ví dụ JSON của chúng tôi sẽ không hoạt động như bây giờ. Với nhiều dịch vụ, chúng tôi có thể sẽ nhận được mã trạng thái HTTP 400 [Yêu cầu không hợp lệ]. Để ngăn chặn điều này, chúng tôi cũng cần thông báo cho dịch vụ mà chúng tôi đang gọi rằng dữ liệu của chúng tôi là JSON để có thể xử lý chính xác. Để làm như vậy, chúng tôi đặt 'Loại nội dung' thành 'application/json' trong tiêu đề yêu cầu

import requests
import json

r = requests.post[
    "//httpbin.org/post",
    data=json.dumps[{"key": "value"}],
    headers={"Content-Type": "application/json"},
]

4. POST dữ liệu JSON

Nếu bạn nghĩ rằng các ví dụ JSON của chúng tôi cho đến nay trông hơi phức tạp - thì bạn hoàn toàn đúng. Yêu cầu giúp dễ dàng giảm tất cả điều này xuống một cuộc gọi đơn giản hơn nhiều. Chúng tôi chỉ có thể cung cấp đối số 'json' với dữ liệu của mình. Các yêu cầu sẽ tự động đặt chính xác các tiêu đề của chúng tôi và tự động mã hóa chuỗi định dạng JSON cho chúng tôi

import requests

r = requests.post['//httpbin.org/post', json={'key':'value'}]

Đọc phản hồi JSON

Bằng cách kiểm tra phản hồi từ dịch vụ của chúng tôi, chúng tôi có thể thấy dữ liệu được trả về cũng là một chuỗi có định dạng JSON. Đây chỉ là văn bản, vì vậy chúng tôi cần tự phân tích cú pháp để sử dụng nó trong tập lệnh Python của mình

>>> r.text
'{\n  "args": {}, \n  "data": "{\\"key\\": \\"value\\"}", \n  "files": {}, \n  "form": {}, \n  "headers": {\n    "Accept": "*/*", \n    "Accept-Encoding": "gzip, deflate", \n    "Content-Length": "16", \n    "Content-Type": "application/json", \n    "Host": "httpbin.org", \n    "User-Agent": "python-requests/2.25.1", \n    "X-Amzn-Trace-Id": "Root=1-60df0aaa-3105fc35436042571335fa22"\n  }, \n  "json": {\n    "key": "value"\n  }, \n  "origin": "**.***.**.***", \n  "url": "//httpbin.org/post"\n}\n'

Ngoài ra, nếu chúng tôi muốn truy cập phản hồi dưới dạng đối tượng JSON, chúng tôi cũng có thể sử dụng Yêu cầu được tích hợp trong bộ giải mã JSON bằng cách gọi. json[] trên đối tượng phản hồi

________số 8

Thực hiện các yêu cầu POST trong Phiên

Ví dụ cuối cùng, hãy đăng nhập vào Hacker News bằng Yêu cầu và gửi một số dữ liệu biểu mẫu để đăng nhập kết hợp với đối tượng

import requests
import json

r = requests.post["//httpbin.org/post", 
    data={"key": "value"},
]
1. Bất kỳ cookie nào chúng tôi nhận được sẽ được lưu trữ trong đối tượng và sẽ được sử dụng lại sau này. get[] gọi đến phiên

Ví dụ của chúng tôi, chúng tôi sẽ tìm kiếm văn bản phản hồi của trang tin tức để xác nhận xem chúng tôi có hiển thị liên kết đăng xuất cho biết chúng tôi đang được phục vụ một trang đã đăng nhập hay không

import requests
import json

r = requests.post["//httpbin.org/post", 
    data={"key": "value"},
]
0

Tuyệt quá. Liên kết của chúng tôi nằm trong phản hồi cho biết chúng tôi đã đăng nhập. Bây giờ chúng ta có thể tiếp tục tương tác với trang web bằng đối tượng phiên thông qua Yêu cầu

Sự kết luận

Bạn đã thấy cách Yêu cầu đơn giản giúp đăng dữ liệu lên các trang web hoặc dịch vụ và cách chúng tôi có thể giảm phần lớn mã phổ biến trong các ứng dụng của mình bằng cách sử dụng nó. Thiết kế đơn giản này chắc chắn đã góp phần vào sự thành công của nó trong cộng đồng Python, khiến nó trở thành một yêu thích vững chắc của các nhà phát triển. Trước khi bạn tiếp cận với một trình duyệt không đầu đầy đủ để gửi dữ liệu của mình, bạn chắc chắn nên cân nhắc sử dụng Yêu cầu

Bạn thường sẽ cần proxy cho các dự án quét web của mình, đừng ngần ngại xem bài viết này về cách sử dụng proxy với Yêu cầu Python

Ian Wootten

Ian là một nhà phát triển tự do đam mê các giải pháp đơn giản. Anh ấy đã viết mã cho các cuộc khảo sát về sức mạnh, đường ống của studio và có bằng tiến sĩ về điện toán phân tán.

Chúng ta có thể gửi một phần thân trong Python yêu cầu GET không?

Có thể chuyển các tiêu đề HTTP bổ sung tới các yêu cầu. phương thức get[] với tham số headers=. Bạn không thể gửi dữ liệu trong nội dung của thông báo HTTP GET nhưng vẫn có thể gửi một số thông tin đến máy chủ bằng các tham số URL.

Python yêu cầu POST hoạt động như thế nào?

Hiểu về Hàm POST của Python yêu cầu . trong yêu cầu. post[], dữ liệu được gửi với tham số dữ liệu, chấp nhận từ điển, danh sách bộ dữ liệu, byte hoặc đối tượng tệp. An HTTP POST request is used to send data to a server, where data are shared via the body of a request. In the request. post[] function, data are sent with the data parameter, which accepts a dictionary, a list of tuples, bytes or a file object.

Dữ liệu trong yêu cầu POST là gì?

Trong điện toán, POST là một phương thức yêu cầu được hỗ trợ bởi HTTP được World Wide Web sử dụng. Theo thiết kế, phương thức yêu cầu POST yêu cầu máy chủ web chấp nhận dữ liệu có trong nội dung của thông báo yêu cầu , rất có thể là để lưu trữ dữ liệu đó. Nó thường được sử dụng khi tải lên một tệp hoặc khi gửi một biểu mẫu web đã hoàn thành.

Chủ Đề