python中json.dumps和json.loads,get和post
一、json.dumps()和json.loads()概念理解
1、json.dumps()和json.loads()是json格式處理函數(可以這么理解,json是字符串)
- json.dumps()函數是將一個Python數據類型列表進行json格式的編碼(可以這么理解,json.dumps()函數是將字典轉化為字符串)
- json.loads()函數是將json格式數據轉換為字典(可以這么理解,json.loads()函數是將字符串轉化為字典)
2、json.dump()和json.load()主要用來讀寫json文件函數
二、get和post
我們都見識過requests庫在靜態網頁的爬取上展現的威力,我們日常見得最多的為get和post請求,他們最大的區別在于安全性上:
區別:
1、傳送方式:get通過地址欄傳輸,post通過報文傳輸。
2、傳送長度:get參數有長度限制(受限于url長度),而post無限制
3、GET和POST還有一個重大區別,簡單的說:GET產生一個TCP數據包;POST產生兩個TCP數據包
長的說:
對于GET方式的請求,瀏覽器會把http header和data一并發送出去,服務器響應200(返回數據);
而對于POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。
也就是說,GET只需要汽車跑一趟就把貨送到了,而POST得跑兩趟,第一趟,先去和服務器打個招呼“嗨,我等下要送一批貨來,你們打開門迎接我”,然后再回頭把貨送過去。
4、
- get是從服務器獲取數據,包括靜態資源(HTML|JS|CSS|Image等等)、動態數據展示(列表數據、詳情數據等等)
- post是向服務器提交數據,比如增刪改數據,提交一個表單,新建一個人用戶或修改一個用戶
對于Post請求,我們可以通過瀏覽器開發者工具或者其他外部工具來進行抓包,得到請求的URL、請求頭(request headers)以及請求的表單data信息,這三樣恰恰是我們用requests模擬post請求時需要的,典型的寫法如下:
response=requests.post(url=url,headers=headers,data=data_search)
由于post請求很多時候是配合Ajax(異步加載)技術一起使用的,我們抓包時,可以直接選擇XHR(XmlHttpRequest)-ajax的一種對象,幫助我們濾掉其他的一些html、css、js類文件,如下圖所示:
雙擊點開,就可以在頁面右邊的Headers頁下看到General、Response Headers、Request Headers、Form Data幾個模塊
剩下的工作就很簡單,交給強大的Requests包完成就好,示例代碼如下:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def get_page(data_search,url): #定義頁面解析的函數,返回值為json格式try:response=requests.post(url=url,headers=headers,data=data_search)if response.status_code==200:return response.json()except requests.ConnectionError as e:print('Error',e.args)最后的小結:
- 做測試的時候我們看清是get還是post請求,不要犯低級錯誤
- 注意傳入的參數是否正常,缺失
總結
以上是生活随笔為你收集整理的python中json.dumps和json.loads,get和post的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现单链表与双向链表
- 下一篇: python衍生特征