脚本宝典收集整理的这篇文章主要介绍了requests,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Requests: 让 HTTP 服务⼈类 urllib urllib2 urllib3
它的基本应⽤
pip3 install requests
get⽅法
import requests r=requests.get( url='http://47.95.142.233:8000/login/auth/', params={"name":"wuya"}) #协议状态码 print('协议状态码:',r.status_code) #获取请求地址 print(r.url) #响应数据 print('返回字符串:',r.text) print('返回⼆进制的内容:',r.content) print('返回的是字典数据类型:',r.json()) #响应头 print('响应头:',r.headers)
备注:响应数据⼀般使⽤r.text来获取,如果响应数据是JSON格式的,那么使⽤r.json()
post方法
json的使用
import json import requests r=requests.post( url='http://47.95.142.233:8000/login/auth/', json={"username":"177****8701","password":"********"}, headers={"Content-Type":"application/json"} ) print(json.dumps(r.json(),indent=True,ensure_ascii=False))
data 的使用
import json import requests r=requests.post( url='http://47.95.142.233:8000/login/auth/', data=json.dumps({"username":"177******701","password":"*****"}), headers={"Content-Type":"application/json"} ) print(json.dumps(r.json(),indent=True,ensure_ascii=False))
data和json的区别
什么时候使⽤json
当请求参数是JSON的时候使⽤json的参数
当请求参数是json,但是要使⽤data的参数,那么请求参数要进⾏序列化的处理
print(json.dumps(r.json(),indent=True,ensure_ascii=False))
什么时候使⽤data
当请求参数是表单的时候使⽤data
当请求参数是JSON格式的时候,那么请求参数要进⾏序列化的处理
print(json.dumps(r.json(),indent=True,ensure_ascii=False))
查询电话号码
import requests r=requests.get(url='http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo', params={"mobileCode":"135******29","userID":""}) print(r.url) print(r.status_code) print(r.text) print(r.headers)
表单数据格式
r=requests.post( url='http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo', data={"mobileCode":"135******9","userID":""}, headers={"content-type":"application/x-www-form-urlencoded"}) print(r.text)
复杂表单格式
r=requests.post( url='https://www.lagou.com/jobs/v2/positionAjax.json', data= {"data":"7Xx8%2BncjEMSVaVAgnRvUNTUE96%2BZQ2vPzFNSpQ88YRMH6wPSJ8i6Cprv9zK8LdkaMCryRC4KsX IeYziVgSmqOpzWRJLTICaDRADfVKega8j0HtL4PbSKAbU2Bu%2BELgYZ9P0eVN9ha0eAJYfBfoMUbuAmQzuFErA 7fLqd2E56hwfw5%2BNRba2bvdD0Dh3cTl%2FIM4NkMRF%2FGcXEvDJWAVWGYKUh%2FSEpM0WJNhhSM0dXB6%2BR 51Ln0ngfo2LEYJKwjMJh"}, headers={ "content-type":"application/x-www-form-urlencoded; charset=UTF-8", "user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36", "cookie":"", "referer":""}) print(r.status_code) print(json.dumps(r.json(),indent=True,ensure_ascii=False))
动态参数讲解
def login(): r=requests.post( url='http://47.95.142.233:8000/login/auth/', json={"username":"135******9","password":"*****"}, headers={"content-type":"application/json"}) return r.json()['token'] def index(): r=requests.get( url='http://47.95.142.233:8000/interface/index', headers={"Authorization":"JWT {0}".format(login())}) print(r.text) assert r.json()['count']['api']==5
第二种写法
def login(): r=requests.post( url='http://47.95.142.233:8000/login/auth/', json={"username":"135*****9","password":"*****"}, headers={"content-type":"application/json"}) return r.json()['token'] def index(): r=requests.get( url='http://47.95.142.233:8000/interface/index', headers={"Authorization":"JWT {token}".format(token=login())}) print(r.text) assert r.json()['count']['api']==4
requests参数讲解
headers
⾥⾯填写请求头的信息,请求头的信息都是字典的数据类型,如:
headers={"Authorization":"JWT {token}".format(token=login())
files
⽂件上传的参数
auth
权限验证
import requests from requests.auth import HTTPBasicAuth r=requests.get( url='http://101.43.158.84:5000/v1/api/books', auth=HTTPBasicAuth(username="admin",password='admin')) print(r.status_code) print(r.json())
timeout
主要指的是服务端响应数据很慢,但有时候很快,所以这个时候建议加timeout 还有⼀种就是当⽹络请求出现requests.exceptions.ConnectTimeout的错误时候,那么就意味着该参数需要上场了(相当于隐式等待)
r=requests.get( url='http://101.43.158.84:5000/v1/api/books', auth=HTTPBasicAuth(username="admin",password='admin'), timeout=180)
verify(当又https的时候进行使用)
当你的代码没任何的问题,但是请求就是返回ssl 以及403的问题,那么就意味着需要设置verify的参数 如返回错误:requests.exceptions.SSLError。那么就需要带上该参数
r=requests.get( url='https://101.43.158.84:5000/v1/api/books', auth=HTTPBasicAuth(username="admin",password='admin'), timeout=180,verify=False) print(r.status_code) print(r.json())
cookies
在请求头⾥⾯需要带上服务端的响应头中返回来的set-cookie的值
import requests def login(): r=requests.post( url='https://home.51cto.com/index?reback=https%3A%2F%2Fedu.51cto.com%2Fcenter%2Fuser%2Findex%2Flogin-success%3Fsign%3DecbeAwNWBQkDAAhTAlEOVgQKVlcGAw5fAVhRBwEOFhZBQggcHANRTB0FCQBGWxgHCl8dUgBbTFxLFlZaQBQRBx5EQVZBSVJcRx1LF0dQT0kGXUdDFlBdWltc%26client%3Dweb', data={"_csrf":"NWhqczczRVNFJygJT1EXNlgwHSpSAhoHZzhZOUZsBj9fXj8He3gNGw", "LoginForm[username]":"17749028701", "LoginForm[password]":"010709jjw", "show_qr":"0" }, headers={"Content-Type":"application/x-www-form-urlencoded", "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36", "Cookie":"_uab_collina=164205870712721159110927; UM_distinctid=17e5253631c1b8-0ddb0af1a13cdc-4343363-144000-17e5253631d2d1; acw_tc=2760827916420587061777522e69dee989f49a7eb7db661740fbef3ac5fdf7; _csrf=064b399d97526e5fc7b722e23372eb7f78ea48131f179d905380899b9bf3237ba%3A2%3A%7Bi%3A0%3Bs%3A5%3A%22_csrf%22%3Bi%3A1%3Bs%3A32%3A%22pOBzxbRemXwYe1_TRP3Jq_Clj6UtLKHH%22%3B%7D; _ourplusFirstTime=122-1-13-15-25-7; www51cto=F4750802852EAE1AB44E35FF796FEF6AGzsm; sajssdk_2015_cross_new_user=1; Hm_lvt_844390da7774b6a92b34d40f8e16f5ac=1642058708; pub_cookietime=2592000; callback_api_url=https%3A%2F%2Fhome.51cto.com%2Findex; _ga=GA1.2.1052987494.1642059908; _gid=GA1.2.532074613.1642059908; once_m=c5a9b5; pub_wechatopen=aG0wVVNRBVIGDQsEWg; lastlogin=on; Hm_lvt_110fc9b2e1cae4d110b7959ee4f27e3b=1642060253; Hm_lpvt_110fc9b2e1cae4d110b7959ee4f27e3b=1642060253; BigUser=e490b846263b4b013a08089e7efd35088f0db060e65a90a872dbd29283dca131a%3A2%3A%7Bi%3A0%3Bs%3A7%3A%22BigUser%22%3Bi%3A1%3Bs%3A87%3A%2224b0CARSUVNUCQkICQNRAFFSU1AFW10KVwIDAQZXXAdQBgcNAQcDBVwMC14MVwwHBFNRVAUGVQlQBFBRAANRAVY%22%3B%7D; reg_sources=edu; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215481241%22%2C%22first_id%22%3A%2217e5253723017-0fc12b4f305943-4343363-1327104-17e5253723113e%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2217e5253723017-0fc12b4f305943-4343363-1327104-17e5253723113e%22%7D; ssxmod_itna=Qqjx2DyCDQi=DtDODzxA2Q=m8CrFrYN=YYTqDglmx0vrueGzDAxn40iDt=aHZjQETmKdzGGP2xO8WGcw=U7bGP+Yr76DMEoDU4i8DCkDPqWDeWtD5xGoDPxDeDADYo0DAqiOD7qDdXLvvz2xGWDmRkDWPDYxDrXpKDRxi7DDyQzx07DQykeQ04X2AHi+5I9=DwK70kD7vIDlaqX43p03M4/2YffFTYDBb5/804dBLrrGbhjmKDX2QDvE5zVxKI/35GMa7ia0beaQxirjRDzvDYflu3HQQe=exxIAfewcGxAiFBOetDi=QKL0D4D=; ssxmod_itna2=Qqjx2DyCDQi=DtDODzxA2Q=m8CrFrYN=YYTqDglDn98eoDsAYaDLGjlWNYF6DN0i=4cSDu0G1PVZRKGFQWxa6ee8DwF=v1n=702PYntArqfNYGD9F+zyEKSWq45lq86PM/pnE6xrt346Q7fitbAB3b=+CbQXFTQhQAjc8A69Gwj+AL+cQi5qemQN=kU1i2Tx1e0KL2IYz0TfWeIlAMvlb3+t6ga4GrvHVfH8T3ytPRF=t4Nfi=g8mDKxuuYxMPeWhbjKlMf/bRGC9ETA4rrk80G3P4P+8Bd1z2c7=p0+icQ71Zy6wC546tviDxc52ChciGNQI3YIYemcQD17LPjtxOIxno==N71eunpLYtyBeRALKeKN6GECbHZP=APYiUv6D1rmN2f5YmKYAYA6kfpjmuS0jfpwDcQ4xeKoANxw3Q2=PYA9uqpeZZq2OwihNjYX+GQ2jp+ld/mm5pvMYtx+Y+eh/6a2SqNx=wDPA42KoePbPtmbpn0g/yRahbOKcgEmQph4plnI7PHSodz/pxfm53dS0f0gfYj9IrabS3ZByQRNVRRTUIHptDojy0Q+Yp8amhBu8GrWpdtdLfZ=16wX2TDUKI4CMWf+l6EndFcIkwcOgFj8aHZq5zMXYIlD728L5A=fgf3j4DQFPBxGe5aDhReRgriSpeME+EWx7Fs7AN1W0h0smQP4QTW2set106pTziVheNea7G+TZ7dZWcADyDlEGbA+7TdiPDDLxD+6D4D=; PHPSESSID=86s37h6e445gd7bbq2sov94uc5; once_p=574e9c; _ourplusReturnCount=27; _ourplusReturnTime=122-1-13-15-52-25; login_from=edu.51cto.com; reg_from=edu.51cto.com; Hm_lpvt_844390da7774b6a92b34d40f8e16f5ac=1642060346", "Referer":"https://home.51cto.com/index/?reback=https%3A%2F%2Fedu.51cto.com%2Fcenter%2Fuser%2Findex%2Flogin-success%3Fsign%3DecbeAwNWBQkDAAhTAlEOVgQKVlcGAw5fAVhRBwEOFhZBQggcHANRTB0FCQBGWxgHCl8dUgBbTFxLFlZaQBQRBx5EQVZBSVJcRx1LF0dQT0kGXUdDFlBdWltc%26client%3Dweb" }) print(r.status_code) print(r.text) print(r.cookies) return r.cookies def profile(): r=requests.get( url='https://edu.51cto.com/center/user/info/get-user-info', cookies=login()) print(r.status_code) print(r.text) profile()
以上是脚本宝典为你收集整理的requests全部内容,希望文章能够帮你解决requests所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。