代码如下:
import requests
import re
import smtplib
import time
def askurl(data):
url = "http://yktwx.henau.edu.cn/wechat/basicQuery/queryElecRoomInfo.html?v=0.38317538989514754"
head = {#这三个headers是必要的!!!!!
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.7(0x18000731) NetType/WIFI Language/zh_CN"
,"Cookie": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/x-www-form-urlencoded"
}
session = requests.Session()#保持会话
lanting_response = session.post(url, headers=head, data=data)#以post方式请求
html = lanting_response.text
a = re.compile(r'房间当前剩余电量(.*)度')
# print(session.cookies)
finda = re.findall(a, html)[0]
# print("该房间剩余电量%s" % finda)
return finda
def main():
lt = "表单1" #可定义多个表单查询多个宿舍
qm = "表单2" #这里以两个宿舍为例
lt_email = "xxxxxxxxxx@qq.com"#第一个宿舍的邮箱
qm_email = "xxxxxxxxxx@qq.com"#第二个宿舍的邮箱
while 1: #第一个死循环
finda = askurl(lt)#传入表单数据
findb = askurl(qm)
if float(finda) <=3 or float(findb) <= 3:#宿舍电量低于3°的时候发送邮箱提醒
#具体判断是哪一个宿舍电量不足进而提醒
if float(finda) <= 3:
email(lt_email)
# print('\r'+finda,end='',flush=True) #输出刷新
value = 1
break #避免重复发送邮件
if float(findb) <= 3:
email(qm_email)
# print('\r'+findb,end='',flush=True)
value = 2
break
time.sleep(1800)#半小时查询一次
# else:
# print("电量充足")
# print('\n',value)
#根据value值判断具体是哪个宿舍电量需要缴费
if value == 1:
while 1:
finda = askurl(lt)
print('\r' + "等待xxx缴费中", end="", flush=True)
if float(finda) > 3:
print("缴费成功")
break
time.sleep(1800)
else:
while 1:
findb = askurl(qm)
print('\r' + "等待xxx缴费中", end="", flush=True)
if float(findb) >3:
print("缴费成功")
break
time.sleep(1800)
return 0
def email(addressee):
HOST = "smtp.qq.com" # 填写邮件服务器
SUBJECT = "停电警告!" # 邮件的标题
TO = addressee # 收件人
FROM = "xxxxxxxx@qq.com" # 发件人
TEXT = "宿舍电量不足,请及时缴费" # 文件内容
BODY = "\r\n".join(( # 邮件的构成(仅限python3可用)
"From: %s" % FROM,
"TO: %s" % TO,
"Subject: %s" % SUBJECT,
"",
TEXT
))
server = smtplib.SMTP_SSL('smtp.qq.com', 465) # 创建一个smtp()对象
server.connect(HOST, "465") # 连接远程主机smtp主机的方法
EMAIL_USE_TLS = True
server.login("xxxxxxx@qq.com", "xxxxxxx") # 远程smtp主机方法。引号中是帐号和授权码
server.sendmail(FROM, [TO], BODY) # 邮件发送
server.quit() # 断开smtp服务器
print("Mail sent successfully")
return 1
if __name__ == "__main__": #程序的入口
while 1:
main()
# print("读取完毕")
参考文章:
Python中requests库POST应用总结
python实现原地刷新方式输出-可用于百分比进度显示输出
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
小白学爬虫(三)-- requests库之Cookie
版权属于:DATA
本文链接:https://zhlblog.cn/%E5%8E%9F%E5%88%9B/30.html
转载时须注明出处及本声明
1111
我怎么才能访问微信里面的链接啊,我·用你这个请求头,不行啊(╯‵□′)╯︵┴─┴,求助
把整个请求头都加上,cookie要最新获取的
收到