Làm thế nào để bạn gửi yêu cầu dữ liệu trong python?

Trong bài đăng trước, chúng tôi đã đề cập đến việc tải xuống/kéo dữ liệu bằng Yêu cầu. Chúng tôi đã tải xuống và thao tác dữ liệu từ các trang web HTML cũng như API. Đăng dữ liệu là những gì sẽ được đề cập ở đây. Chúng tôi sẽ gửi dữ liệu như thể nó từ một biểu mẫu HTML. Chúng tôi cũng sẽ đăng dữ liệu ở định dạng JSON dưới dạng tải trọng

Mã nguồn

Các ví dụ dưới đây sẽ được sử dụng httpbin. org, là dịch vụ phản hồi và yêu cầu HTTP. Trang web này có một số tính năng hay với một trong số đó là nó sẽ trả về dữ liệu ban đầu bạn đã đăng trong phản hồi. Điều này có thể làm cho việc gỡ lỗi dễ dàng hơn

Đăng dữ liệu biểu mẫu

Nếu bạn chưa cài đặt

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
2, có thể thực hiện dễ dàng bằng cách sử dụng
import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
3

pip install requests

Tiếp theo, chúng ta có thể tạo tập lệnh Python mới để nhập

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
2 và thiết lập một biến cho URL mục tiêu của mình. Chúng tôi cũng sẽ sử dụng từ điển để đăng dữ liệu biểu mẫu

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}

Bây giờ, chúng tôi đã sẵn sàng sử dụng

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
2 để đăng dữ liệu người dùng lên URL mục tiêu của chúng tôi

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}

response = requests.post[url, data=data]

print[response]  # 

Lưu ý rằng biến phản hồi của chúng tôi là một đối tượng

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
6. Để có thể sử dụng dữ liệu này, chúng ta cần áp dụng một phương thức hoặc một thuộc tính. Chúng ta sẽ áp dụng thuộc tính
import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
7 trong ví dụ tiếp theo. Thuộc tính văn bản sẽ cung cấp cho chúng tôi tất cả dữ liệu phản hồi dưới dạng một chuỗi

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}

# as form data
response = requests.post[url, data=data]
print[response]  # 

result = response.text

print[type[result]]  # 
print[result]

Kết quả in bên dưới

Vì đây chỉ là một chuỗi [httpbin. org vui lòng trả về một phiên bản in đẹp với tất cả các khoảng cách], rất khó để sử dụng dữ liệu này. Tuy nhiên, như đã đề cập trong bài trước, Yêu cầu có bộ giải mã JSON tích hợp mà chúng ta có thể sử dụng

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
0

Đầu ra của chúng tôi cho cửa sổ đầu cuối sẽ trông giống nhau [chúng tôi đã sử dụng

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
8 để in đẹp dữ liệu từ điển của mình để giúp nó có thể đọc được]. Sự khác biệt quan trọng là chúng tôi có biến từ điển mà chúng tôi có thể làm việc để truy cập dữ liệu của mình

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
2

Đăng tải trọng JSON

Gửi yêu cầu POST bằng tải trọng JSON khác với gửi dữ liệu biểu mẫu. Dữ liệu biểu mẫu được gửi bằng một loạt các cặp khóa-giá trị. Ngoài ra, một tải trọng bao gồm việc gửi mọi thứ trong một đoạn dữ liệu duy nhất. Dưới đây là bảng phân tích nhanh về sự khác biệt giữa việc gửi dữ liệu biểu mẫu so với tải trọng JSON

Dữ liệu biểu mẫu

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
3

Tải trọng JSON

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
4

Lưu ý rằng cũng có một thay đổi đối với

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
9 trong tiêu đề. Nếu chúng tôi thiết lập tập lệnh Python theo cùng một cách, ngoại trừ việc chúng tôi đang chuyển sang Tải trọng JSON, chúng tôi sẽ cần chuyển đổi dữ liệu của mình thành JSON. Đối với điều này, chúng ta có thể sử dụng thư viện Python
import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}

response = requests.post[url, data=data]

print[response]  # 
0 tích hợp sẵn

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
7

Dữ liệu chúng tôi dự định đăng là một cuốn từ điển. Bằng cách sử dụng phương pháp

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}

response = requests.post[url, data=data]

print[response]  # 
1, chúng tôi có thể chuyển đổi từ điển thành chuỗi có định dạng JSON để đăng dưới dạng tải trọng. Ngoài ra, như chúng tôi đã làm trước đây, chúng tôi có thể áp dụng bộ giải mã JSON của Yêu cầu để chuyển đổi thông tin phản hồi của chúng tôi thành từ điển

Trước đây, người ta đã đề cập rằng việc đặt

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
9 trong tiêu đề là phổ biến. Chúng tôi có thể thiết lập một biến từ điển với các tiêu đề tùy chỉnh của mình. Chúng tôi sẽ làm điều đó bằng cách đặt
import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
9 thành
import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}

response = requests.post[url, data=data]

print[response]  # 
4

pip install requests
2

Với điều này được thêm vào, bạn sẽ có thể xác minh rằng tiêu đề này đã được đặt vì httpbin. org sẽ trả lại kết quả. Ngoài ra, chúng ta cũng có thể truy cập các tiêu đề ban đầu được gửi từ biến

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}

response = requests.post[url, data=data]

print[response]  # 
5

Làm việc với Phiên yêu cầu

Cuối cùng, bạn sẽ gặp phải tình huống phải duy trì phiên người dùng. Giả sử trước tiên bạn phải đăng nhập/xác thực, điều này sẽ đặt cookie trình duyệt phải được gửi với mỗi yêu cầu tiếp theo

Sử dụng lại httpbin, chúng tôi sẽ lưu cookie và sau đó thử truy xuất cookie đó. Hãy xem xét những điều sau đây

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
0

Trong ví dụ trên, mỗi yêu cầu tiếp theo đang bắt đầu một phiên mới. Chúng ta có thể giải quyết vấn đề nan giải này bằng cách sử dụng một đối tượng

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}

response = requests.post[url, data=data]

print[response]  # 
6. Chúng tôi sẽ sử dụng trình quản lý bối cảnh sẽ đính kèm tất cả các yêu cầu HTTP được thực hiện trong phiên của chúng tôi

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}
1

Tương tự như lần thử trước, chúng tôi đang đặt cookie “abc” với giá trị là “123”. Vì chúng tôi đang sử dụng cùng một phiên để nhận cookie nên dữ liệu sẽ được trả lại cho chúng tôi. Lưu ý rằng httpbin trả về thông tin cookie trong phản hồi. Để lấy cookie thực tế, có một

import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}

response = requests.post[url, data=data]

print[response]  # 
7 được đính kèm với phiên. Sử dụng điều này, chúng ta có thể gọi phương thức
import requests

url = '//httpbin.org/post'
data = {'user':'me@example.com'}

response = requests.post[url, data=data]

print[response]  # 
8 để lấy cookie của mình ở định dạng từ điển

Đặt phiên yêu cầu là cần thiết khi bạn cần thực hiện nhiều yêu cầu. Và, mỗi yêu cầu tiếp theo sẽ yêu cầu dữ liệu lâu dài, chẳng hạn như cookie phiên

Yêu cầu GET và POST trong Python là gì?

NHẬN. để yêu cầu dữ liệu từ máy chủ. ĐĂNG. để gửi dữ liệu cần xử lý đến máy chủ .

Làm cách nào để chuyển tham số trong yêu cầu POST Python?

Để gửi tham số trong URL, ghi tất cả khóa tham số. các cặp giá trị vào từ điển và gửi chúng dưới dạng đối số params tới bất kỳ yêu cầu GET, POST, PUT, HEAD, DELETE hoặc OPTIONS . sau đó https. //một số trang web. com/?param1=value1¶m2=value2 sẽ là url cuối cùng của chúng tôi.

Làm cách nào để tạo yêu cầu API bằng Python?

Thực hiện lệnh gọi API của bạn .
def get_data[bản thân, api]
phản ứng = yêu cầu. nhận [f"{api}"]
nếu phản hồi. status_code == 200
print["lấy dữ liệu thành công"]
bản thân. formatted_print[phản hồi. json[]]
print[f"Xin chào mọi người, có {response. status_code} lỗi với yêu cầu của bạn"]

Chủ Đề