4.Python发Post请求

Python发Post请求:

r = request.post(url, headers = header, json = body, params = par, verify =False)

注:json = body说明,如果content-type不是json格式,都用data = xxxx

 

post请求有两种方法传参:

application/json类型,传json=字典; 其他类型,传data=json格式的字符串

第一种:传json参数,自动转json了(json=字典)

body = {"c": None, "d": True}  #字典

json=body

第二种:传data参数(需json.dumps转成json格式)(data=json格式的字符串)

body = {"c": None, "d": True} #字典

data=json.dumps(body)  # json.dumps(body),转成了json格式的字符串

 1 import requests
 2 import json
 3 import hashlib
 4 
 5 class InfoGet():
 6     def getstr(self):
 7         '''填写参数,获取字符串,用来生成sign'''
 8         self.data = '''{
 9         "name": "1",
10         "age": 10,
11         "test": true
12         }'''
13         tmp_str = self.data.replace("\n", "").replace(" ", "")  #上边的字符串去掉换行和空格
14         str1 = "ff491"
15         new_str = str1 + tmp_str
16         return(new_str)   #返回字符串,md5加密生成sign时用到
17 
18     '''md5加密,生成sign'''
19     def jiamimd5(self, src):  #给一个字符串,md5加密生成sign
20         m = hashlib.md5()
21         m.update(src.encode(encoding='UTF-8'))
22         return m.hexdigest()
23 
24     '''生成的sign转大写'''
25     def upp(self, sign):
26         # print("sign的值为:", sign.upper())
27         return sign.upper()
28 
29     '''信息查询, 传json=字典'''
30     def info_get_send_dict(self, upper_sign):
31         url = "http://api.getinfo"
32         dict1 = json.loads(self.data)  #getstr方法里的字符串转字典
33         # dict1 = eval(self.data) #json格式的字符串不能区分是否是标准形式,也可以用eval()转成字典。若含None必须用eval(),含null必须用json.loads()
34         dict1["sign"] = upper_sign   #把生成的sign添加到dict1字典
35         r = requests.post(url, json = dict1, verify = False)
36         print(r.status_code)
37         print(r.content.decode("utf-8"))
38 
39     '''信息查询, 传data=json格式的字符串'''
40     def info_get_send_data(self, upper_sign):
41         url = "http://api.getinfo"
42         tmp_str = self.data.replace("\n", "").replace(" ", "")
43         #把生成sign加到json格式的字符串中,整体传给data
44         json_data = tmp_str[:-1] + ',"sign": "%s"'%upper_sign + tmp_str[-1:]
45         r = requests.post(url, data=json_data, verify = False)
46         print(r.status_code)
47         print(r.content.decode("utf-8"))
48 
49 if __name__ == "__main__":
50     infoget = InfoGet()
51     new_str = infoget.getstr()  #返回string
52     sign = infoget.jiamimd5(new_str)  #md5加密,返回sign
53     upper_sign = infoget.upp(sign)  #加密后将sign转大写
54     # print(upper_sign)
55     #传json=字典 的请求调用
56     # infoget.info_get_send_dict(upper_sign)
57     #传data=json格式字符串 的请求调用
58     infoget.info_get_send_data(upper_sign)
实例:Post请求传json/data,及参数关联

 

InsecureRequestWarning, 忽略这个warning的方法

import urllib3

urllib3.disable_warning()

 

python中{}中的数据类型叫做字典,接口中{}的请求数据叫做json类型

 

正则表达式提取文本:

1.固定格式:  result = re.findall(“前边的内容(.+?)后边的内容”, res) 。 注意:从res中查找符合条件的; 特殊符号加转义字符

2.正则表达式返回的是list,取出其中的字符串,用下标取出,如:print(result[0])

import re
str1 = '<a href="http://www.test.com/dvd" target="_blank">鱼</a>'
s = re.findall('p://(.+?)/dvd"', str1)
print(s[0])  # www.test.com

posted on 2019-12-14 15:45  水晶的晶  阅读(25)  评论(0)    收藏  举报