程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

如何使用Request方法發送Post請求、JSON文件介紹、Python中的JSON數據以及獲取到的JSON數據的解析。

編輯:Python

目錄

  • 前言
  • 一、Request中的Post方法相關參數介紹以及實戰
    • 1-1、Post方法
    • 1-2、實戰
  • 二、JSON文件介紹以及解析
    • 2-1、JSON文件介紹
    • 2-2、Python中的JSON模塊以及解析JSON數據
    • 2-3、將python對象轉換為JSON字符串
  • 三、requests.post()和session.post()的區別
    • 3-1、requests.post用法
    • 3-2、session.post用法
    • 3-3、區別
  • 總結


前言

使用接口爬取數據用!


一、Request中的Post方法相關參數介紹以及實戰

1-1、Post方法

參數介紹
url: 必填,請求的網址
data: 選填,字典,元組列表,字節或者要發送到URL的文件對象。
json: 可選,發送到指定URL的JSON對象。
files: 可選,要發送到URL的文件字典
allow_redirects:可選。用於啟用/禁用重定向的布爾值。
默認True(允許重定向)
auth: 可選。用於啟用某種HTTP身份驗證的元組。
默認None
cert:可選。指定證書文件或密鑰的字符串或元組。
默認None
cookies: 可選。要發送到指定網址的Cookie字典。
默認None
headers:可選。要發送到指定網址的HTTP標頭字典。
默認None
proxies: 可選。URL代理協議字典。
默認None
stream: 可選。如果響應應立即下載(False)或流式傳輸(True)的布爾指示。
默認False
timeout: 可選。一個數字或一個元組,指示等待客戶端建立連接和/或發送響應的秒數。
默認值None表示請求將繼續,直到連接關閉。
verify: 可選。用於驗證服務器TLS證書的布爾值或字符串指示。默認True

1-2、實戰

import requests
import configparser
import pprint
import json
url = '這裡寫具體的url'
json = {

'這裡寫具體要獲取的資源,字典格式'
}
headers = {

"User-Agent": '這裡寫用戶代理的一些信息,打開網站,點檢查,點網絡,點擊下邊的第一個元素,在請求標頭下找到User-Agent貼過來',
"cookie": '和找到User-Agent方法一樣,在下邊找到cookie'}
session = requests.session()
# 傳入相關參數,開始請求
response = session.post(url=url, json=json , headers=headers)
pprint.pprint(json.loads(response.text))
return response

二、JSON文件介紹以及解析

2-1、JSON文件介紹

# JSON格式是網站和API使用的通用標准格式,它是一種數據結構,將對象用文本形式表示出來。
# JSON格式字符串示例:
# JSON數據看起來像是一個Python字典,以鍵值對的形式傳遞數據。然而,JSON數據也可以是字符串、數字、布爾值或者是列表。
{

"name": "United States",
"population": 331002651,
"capital": "Washington D.C.",
"languages": [
"English",
"Spanish"
]
}
# 在JSON流行之前,XML是更常見的選擇,但是看起來相對比較復雜
# XML相同信息示例:
<?xml version="1.0" encoding="UTF-8"?>
<country>
<name>United States</name>
<population>331002651</population>
<capital>Washington D.C.</capital>
<languages>
<language>English</language>
<language>Spanish</language>
</languages>
</country>

2-2、Python中的JSON模塊以及解析JSON數據

# Python原生支持JSON數據,Python Json模塊是標准庫的一部分。
# 這個JSON模塊可以將JSON數據從JSON格式轉換為等效的Python對象,例如字典和列表,還可以反向轉換。
# 將JSON字符串解析為Python字典(解析為什麼格式的數據主要看輸入的數據是什麼)
# eg:
import json
country = '{
"name": "United States", "population": 331002651}'
# loads: 代表的是字符串,loads方法用於讀取JSON字符串。
country_dict = json.loads(country)
# country_dict 此時已經是Python字典
# 除了loads()方法,還有load()方法,load()用於讀取文件中的JSON數據。load()方法接收一個文件對象並返回解析為Python對象的JSON數據。

2-3、將python對象轉換為JSON字符串

# 將Python對象轉換為JSON對象也稱為序列化或JSON編碼。可以使用函數dumps()來實現。
import json
languages = ["English","French"]
country = {

"name": "Canada",
"population": 37742154,
"languages": languages,
"president": None,
}
country_string = json.dumps(country)
print(country_string)

結果

{
"name": "Canada", "population": 37742154, "languages": ["English", "French"],
"president": null}

三、requests.post()和session.post()的區別

3-1、requests.post用法

import requests
response = requests.post(url=url)

3-2、session.post用法

import requests
session = requests.session()
response = session.post(url=url)
# 獲取到cookies
cookie = session.cookies

3-3、區別

requests.post:在調用完成後就關閉了連接,所以cookies就隨著connect的消亡而消亡。
session.post:高級用法,未關閉上下文連接,會話一直保持在連接池內,即cookies是一直有效的。
總結
1、request占用資源較少,安全性比較高,但是無法獲取到特別多的信息。
2、session相對來說消耗資源較多,安全性相對較低,但是可以獲取到更多的信息,例如cookies。
3、request相當於某一次訪問的局域變量,session相當於客戶端的全局變量。

參考文章:
Python Requests post() 方法.
request和session的區別.
使用Python讀取和解析JSON數據教程.
python調用request.post請求與Postman方法.


總結

愛情只會影響我敲代碼的速度!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved