小編寫這篇文章的一個主要目的,主要是給大家去做一個科普,解釋關(guān)于python中的一些相關(guān)的用法實例,包括介紹了python Requests請求方法,還有一些具體用法的詳細(xì)解釋,具體內(nèi)容,下面小編給大家詳細(xì)的解答。
一、requests
request的說法網(wǎng)上有很多,簡單來說就是就是python里的很強(qiáng)大的類庫,可以幫助你發(fā)很多的網(wǎng)絡(luò)請求,比如get,post,put,delete等等,這里最常見的應(yīng)該就是get和post。
二、requests安裝方式
$pip install requests $easy_install requests
三、說說常見的兩種請求,get和post
1、get請求
(1)參數(shù)直接跟在url后面,即url的“?”后面,以key=value&key=value的形式
(2)由于get的參數(shù)是暴露在外面的,所以一般不傳什么敏感信息,經(jīng)常用于查詢等操作
(3)由于參數(shù)是跟在url后面的,所以上傳的數(shù)據(jù)量不大
2、post請求
(1)參數(shù)可以寫在url后面,也可以寫在body里面
(2)用body上傳請求數(shù)據(jù),上傳的數(shù)據(jù)量比get大
(3)由于寫在body體里,相對安全
post正文格式
(1)form表單html提交數(shù)據(jù)的默認(rèn)格式
Content-Type:application/x-www-form-urlencoded
例如:username=admin&password123
(2)multipart-form-data.復(fù)合表單可轉(zhuǎn)數(shù)據(jù)+文件
(3)純文本格式raw,最常見的json.xml html js
Content-Type:application/json.text/xml.text/html
(4)binary.二進(jìn)制格式:只能上傳一個文件
四、requests發(fā)送請求
1、requests發(fā)送get請求
url="http://www.search:9001/search/" param={"key":"你好"} res=requests.get(url=url,params=params)
2、request發(fā)送post請求(body是json格式,如果還帶cookie)
headers={'Content-Type':'application/json'}#必須有 url="http://www.search:9001/search/" data={"key":"你好"} cookies={"uid":"1"} res=requests.post(url=url,headers=headers,data=data,cookies=cookies)
3、request發(fā)送post請求(body是urlencoded格式)
url="http://www.search:9001/search/" data={"key":"你好"} res=requests.post(url=url,headers=headers)
4、request上傳文件
def post_file_request(url,file_path): if os.path.exists(file_path): if url not in[None,""]: if url.startswith("http")or url.startswith("https"): files={'file':open(file_path,'rb')} res=requests.post(url,files=files,data=data) return{"code":0,"res":res} else: return{"code":1,"res":"url格式不正確"} else: return{"code":1,"res":"url不能為空"} else: return{"code":1,"res":"文件路徑不存在"}
五、response
request發(fā)送請求后,會返回一個response,response里有好多信息,我進(jìn)行了一下封裝,基本如下
staticmethod def get_response_text(response): if response not in[None,""]: if isinstance(response,requests.models.Response): return{"code":0,"res":response.text.encode('utf-8').decode('unicode_escape')}#這種方式可以將url編碼轉(zhuǎn)成中文,返回響應(yīng)文本 else: return{"code":1,"res":"response不合法"} else: return{"code":1,"res":"response對像不能為空"} staticmethod def get_response_status_code(response): if response not in[None,""]: if isinstance(response,requests.models.Response): return{"code":0,"res":response.status_code}#返回響應(yīng)狀態(tài)嗎 else: return{"code":1,"res":"response不合法"} else: return{"code":1,"res":"response對像不能為空"} staticmethod def get_response_cookies(response): if response not in[None,""]: if isinstance(response,requests.models.Response): return{"code":0,"res":response.cookies}#返回cookies else: return{"code":1,"res":"response不合法"} else: return{"code":1,"res":"response對像不能為空"} staticmethod def get_response_headers(response): if response not in[None,""]: if isinstance(response,requests.models.Response): return{"code":0,"res":response.headers}#返回headers else: return{"code":1,"res":"response不合法"} else: return{"code":1,"res":"response對像不能為空"} staticmethod def get_response_encoding(response): if response not in[None,""]: if isinstance(response,requests.models.Response): return{"code":0,"res":response.encoding}#返回編碼格式 else: return{"code":1,"res":"response不合法"} else: return{"code":1,"res":"response對像不能為空"} 補(bǔ)充:requests中遇到問題 獲取cookie #-*-coding:utf-8-*- #獲取cookie import requests import json url="https://www.baidu.com/" r=requests.get(url) #將RequestsCookieJar轉(zhuǎn)換成字典 c=requests.utils.dict_from_cookiejar(r.cookies) print(r.cookies) print(c) for a in r.cookies: print(a.name,a.value) >>控制臺輸出: <RequestsCookieJar[<Cookie BDORZ=27315 for.baidu.com/>]> {'BDORZ':'27315'} BDORZ 27315 發(fā)送Cookie #-*-coding:utf-8-*- #發(fā)送cookie到服務(wù)器 import requests import json host="*****" endpoint="cookies" url=''.join([host,endpoint]) #方法一:簡單發(fā)送 #cookies={"aaa":"bbb"} #r=requests.get(url,cookies=cookies) #print r.text
#方法二:復(fù)雜發(fā)送
s=requests.session() c=requests.cookies.RequestsCookieJar() c.set('c-name','c-value',path='/xxx/uuu',domain='.test.com') s.cookies.update(c)
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)砀嗟膸椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/128248.html
摘要:是用語言編寫客戶端庫,跟類似,基于,但比更加方便,可以節(jié)約我們大量的工作,完全滿足測試需求,編寫爬蟲和測試服務(wù)器響應(yīng)數(shù)據(jù)時經(jīng)常會用到。 Requests 是用Python語言編寫HTTP客戶端庫,跟urllib、urllib2類似,基于 urllib,但比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP?測試需求,編寫爬蟲和測試服務(wù)器響應(yīng)數(shù)據(jù)時經(jīng)常會用到。Reque...
摘要:是用語言編寫客戶端庫,跟類似,基于,但比更加方便,可以節(jié)約我們大量的工作,完全滿足測試需求,編寫爬蟲和測試服務(wù)器響應(yīng)數(shù)據(jù)時經(jīng)常會用到。 Requests 是用Python語言編寫HTTP客戶端庫,跟urllib、urllib2類似,基于 urllib,但比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP?測試需求,編寫爬蟲和測試服務(wù)器響應(yīng)數(shù)據(jù)時經(jīng)常會用到。Reque...
摘要:是用語言編寫客戶端庫,跟類似,基于,但比更加方便,可以節(jié)約我們大量的工作,完全滿足測試需求,編寫爬蟲和測試服務(wù)器響應(yīng)數(shù)據(jù)時經(jīng)常會用到。 Requests 是用Python語言編寫HTTP客戶端庫,跟urllib、urllib2類似,基于 urllib,但比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP?測試需求,編寫爬蟲和測試服務(wù)器響應(yīng)數(shù)據(jù)時經(jīng)常會用到。Reque...
閱讀 919·2023-01-14 11:38
閱讀 891·2023-01-14 11:04
閱讀 750·2023-01-14 10:48
閱讀 2041·2023-01-14 10:34
閱讀 956·2023-01-14 10:24
閱讀 835·2023-01-14 10:18
閱讀 506·2023-01-14 10:09
閱讀 584·2023-01-14 10:02