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'}
3pip 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ẫuimport 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ôiimport 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ỗiimport 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
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ìnhimport 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'}
3Tải trọng JSON
import requests
url = '//httpbin.org/post'
data = {'user':'me@example.com'}
4Lư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ẵnimport requests
url = '//httpbin.org/post'
data = {'user':'me@example.com'}
7Dữ 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ểnTrướ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] #
4pip install requests
2Vớ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] #
5Là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'}
0Trong 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ôiimport requests
url = '//httpbin.org/post'
data = {'user':'me@example.com'}
1Tươ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