requests

发布时间:2022-06-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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()

requests

 

 

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))

requests

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,请注明来意。
标签: