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