post请求(data)
#coding :utf-8
'''数据类型为“application/x-www-form-urlencoded”'''
import requests
url = "http://10.99.35.26:8080/j_acegi_security_check"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
d ={"j_username":"zhangyx",
"j_password":"zhangyx",
"from":"","Submit":"%E7%99%BB%E5%BD%95",
"remember_me":"on"}
s = requests.session()
r = s.post(url,headers=headers,data=d)
print(r.content.decode())#通过decode可以转码
#判断是否登录成功
import re
t = re.findall(r'<b>(.+?)</b>',r.content.decode())
if t[0]=='张云霞' and t[1]=='注销':
print("登录成功")
上述代码需要掌握的知识点:
1.re模块:正则表达式
常用方法:
compile(pattern, flags = 0) 匹配任何可选的标记来编译正则表达式的模式,然后返回一个正则表达式对象
match(pattern, string, flags = 0) 使用带有可选标记的正则表达式的模式来匹配字符串。如果匹配成功,返回匹配对象,否则返回None
search(pattern, string ,flags = 0) 使用可选标记搜索字符串中第一次出现的正则表达式模式。如果匹配成功,则返回匹配对象,否则返回None
findall(pattern, string[,flags] ) 查找字符串中所有(非重复)出现的正则表达式模式,并返回一个匹配列表
finditer(pattern, string[,flags] ) 与findall()相同,但返回的是一个迭代器。对于每一次匹配,迭代器都能返回一个匹配对象
split(pattern, string, max = 0) 根据正则表达式的模式分隔符,split函数将字符串分割为列表,返回匹配列表,分割最多操作max次
group(num = 0) 返回整个匹配对象,或者编号为num的特定子组