小編寫這篇文章的一個主要目的,主要是給大家去做一個科普,解釋關于python中的一些相關的用法實例,包括介紹了python Requests請求方法,還有一些具體用法的詳細解釋,具體內容,下面小編給大家詳細的解答。
一、requests
request的說法網上有很多,簡單來說就是就是python里的很強大的類庫,可以幫助你發(fā)很多的網絡請求,比如get,post,put,delete等等,這里最常見的應該就是get和post。
二、requests安裝方式
$pip install requests $easy_install requests
三、說說常見的兩種請求,get和post
1、get請求
?。?)參數直接跟在url后面,即url的“?”后面,以key=value&key=value的形式
?。?)由于get的參數是暴露在外面的,所以一般不傳什么敏感信息,經常用于查詢等操作
(3)由于參數是跟在url后面的,所以上傳的數據量不大
2、post請求
?。?)參數可以寫在url后面,也可以寫在body里面
?。?)用body上傳請求數據,上傳的數據量比get大
?。?)由于寫在body體里,相對安全
post正文格式
?。?)form表單html提交數據的默認格式
Content-Type:application/x-www-form-urlencoded
例如:username=admin&password123
(2)multipart-form-data.復合表單可轉數據+文件
(3)純文本格式raw,最常見的json.xml html js
Content-Type:application/json.text/xml.text/html
(4)binary.二進制格式:只能上傳一個文件
四、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里有好多信息,我進行了一下封裝,基本如下
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編碼轉成中文,返回響應文本 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}#返回響應狀態(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對像不能為空"} 補充:requests中遇到問題 獲取cookie #-*-coding:utf-8-*- #獲取cookie import requests import json url="https://www.baidu.com/" r=requests.get(url) #將RequestsCookieJar轉換成字典 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到服務器 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ā)送
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>
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/128248.html
摘要:是用語言編寫客戶端庫,跟類似,基于,但比更加方便,可以節(jié)約我們大量的工作,完全滿足測試需求,編寫爬蟲和測試服務器響應數據時經常會用到。 Requests 是用Python語言編寫HTTP客戶端庫,跟urllib、urllib2類似,基于 urllib,但比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP?測試需求,編寫爬蟲和測試服務器響應數據時經常會用到。Reque...
摘要:是用語言編寫客戶端庫,跟類似,基于,但比更加方便,可以節(jié)約我們大量的工作,完全滿足測試需求,編寫爬蟲和測試服務器響應數據時經常會用到。 Requests 是用Python語言編寫HTTP客戶端庫,跟urllib、urllib2類似,基于 urllib,但比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP?測試需求,編寫爬蟲和測試服務器響應數據時經常會用到。Reque...
摘要:是用語言編寫客戶端庫,跟類似,基于,但比更加方便,可以節(jié)約我們大量的工作,完全滿足測試需求,編寫爬蟲和測試服務器響應數據時經常會用到。 Requests 是用Python語言編寫HTTP客戶端庫,跟urllib、urllib2類似,基于 urllib,但比 urllib 更加方便,可以節(jié)約我們大量的工作,完全滿足 HTTP?測試需求,編寫爬蟲和測試服務器響應數據時經常會用到。Reque...
閱讀 1066·2023-01-14 11:38
閱讀 1062·2023-01-14 11:04
閱讀 902·2023-01-14 10:48
閱讀 2378·2023-01-14 10:34
閱讀 1147·2023-01-14 10:24
閱讀 1026·2023-01-14 10:18
閱讀 654·2023-01-14 10:09
閱讀 733·2023-01-14 10:02