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)
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
浙公网安备 33010602011771号