python(十四)网络编程

1.通过python代码实现get请求和post请求

需要导入模块requires

2.get请求:1.get没有参数的请求

                 2.get有参数的请求

               3. get没有请求参数但是有header

注意:data的书写方式是字典形式的

get没有参数的请求:r=requires.get(url)

返回的三种形式:                     r.json()   #返回的是字典

                                                  r.text  # 返回的是字符串  

                                                  r.content() #返回的是bytes类型

get有参数的请求  r =requires.get(url,data)

get无参数有headers   r=requires.get(url,headers=header)

返回的三种形式:                     r.json()   #返回的是字典

                                                  r.text  # 返回的是字符串  

                                                  r.content() #返回的是bytes类型

import datetime

import requests
url = 'http://api.nnzhp.cn/api/user/stu_info'
req = requests.get(url,params={'stu_name':'abc'})
print(req.json()) #返回的json直接帮你转成了字典
print(req.text) #返回的就是字符串,如果返回的不是json的话,就要用它了
print(req.status_code) #返回的http状态码
print(req.content)  #返回的bytes类型的,下载文件的时候用它

3.post请求:只有body,header,cookie

注意:data的书写形式是字典类型

只有body的情况:r=requires.post(url,data)

有cookie和body的情况:

header={‘cookie’:“XXXXXX”}

r=requires.post(url,data,headers=header)

有header,cookie,和body的情况:

header={“cookie”:“XXXX”,‘XX’:“XXX”}

返回的三种形式:                     r.json()   #返回的是字典

                                                  r.text  # 返回的是字符串  

                                                  r.content() #返回的是bytes类型

#简单的post请求只有请求参数
url="http://api.nnzhp.cn/api/user/login"
req = requests.post(url,data={"username":"niuhanyang","passwd":"aA123456"})
print(req.json())
#post有header、cookies
url="https://qun.qq.com/cgi-bin/qun_mgr/get_group_list"
data ={"bkn": 208992859}
#cookies作为参数
# d = {'pgv_pvi': '6636933120', 'RK': 'gRZhhBpNbS', 'ptcz': '14bab564718e3e1048a09cc0e18a23f7c51f20d5b93da610cc1427f51f63a2f8', 'pgv_pvid': '4990195883', 'ts_uid': '5190463916', 'uin': 'o0511402865', 'pgv_si': 's7505852416', 'skey': '@2ttDS8Ljw', 'p_uin': 'o0511402865', 'pt4_token': 'AgqIsYBhO1b82zx1N4SxoGpCxGV0d38ss7jCI1nYfIg_', 'p_skey': '9nlMjw4Uy44*Hu5iL3DOFonmAtZtExiniLykrsIRKmM_', 'traceid': '14035c8a79'} # req = requests.post(url,data,cookies=d)
#把cookies作为headers的参数之一 header = {'cookie':"pgv_pvi=6636933120; RK=gRZhhBpNbS; ptcz=14bab564718e3e1048a09cc0e18a23f7c51f20d5b93da610cc1427f51f63a2f8; pgv_pvid=4990195883; ts_uid=5190463916; uin=o0511402865; pgv_si=s7505852416; skey=@2ttDS8Ljw; p_uin=o0511402865; pt4_token=AgqIsYBhO1b82zx1N4SxoGpCxGV0d38ss7jCI1nYfIg_; p_skey=9nlMjw4Uy44*Hu5iL3DOFonmAtZtExiniLykrsIRKmM_; traceid=14035c8a79"} req = requests.post(url,data,headers=header) print(req.json())

 上传的是json形式的参数:

import datetime

import requests
url="https://oapi.dingtalk.com/robot/send?access_token=44402c9408df8cf3f429c02a20399fc34604f98cf572fcaeaa3f9592426176a7"
today = datetime.datetime.now()
d = {"msgtype": "text","text": {"content": "现在是%s,大家不要忘记写作业哦!暗号:besttest"%today} }
req = requests.post(url,json=d)
print(req.json())
print(req.cookies) #获取cookies

4.上传文件:

r=requires.post(url,files={‘file’:open(‘文件名’,‘rb’)})

用session()方法请求:作用是:当我们登录一个系统后,session会自动帮我们保存cookie,然后在用session()支付接口或查看订单接口时就不用再传cookies了

r=requires.session()

r.post(url,data=data)、r.get(url,params=data)

import datetime

import requests

url = "http://api.nnzhp.cn/api/file/file_upload"
f = open('sxy.mp4','rb')
data = {'file':f}
r = requests.post(url,files=data)
print(r.json())
f.close()

 5.下载文件

import datetime

import requests

url = "https://q4.qlogo.cn/g?b=qq&nk=516481&s=14"
req = requests.get(url)

f = open('wjl.jpg','wb')
f.write(req.content)
f.close()
原文地址:https://www.cnblogs.com/dmjsd/p/11116922.html