(),按照前面的方法,开始请求html:
import re
import requests
def get_html():
url='http://pay.hsej.net/SignUp/Dormitory/EnergyRoomPay.aspx?data=22c8f65duY3VGh4Rwg8TyxexnQltb8nxxY7iM6W%2fHLZbm3ZwgMc%3d'
req = request.Request(url)
r = request.urlopen(req)
html = r.read()
html = str(html, encoding='UTF-8')
print(html)
找到的输出是:
请求异常,请稍后再试 #之后是包含js的空白页面代码
这里应该是需要通过模拟手机来打开这个页面,并且明白需要添加一个请求,所以:
import re
import requests
def get_html():
url='http://pay.hsej.net/SignUp/Dormitory/EnergyRoomPay.aspx?data=22c8f65duY3VGh4Rwg8TyxexnQltb8nxxY7iM6W%2fHLZbm3ZwgMc%3d'
pattern = '([\s\S]*?)度'
headers = {
'Host': 'pay.hsej.net',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Linux; Android 7.1.2;XXXXXXXX',
#上面一部分代码用XX代替了,如果测试需要可以自行修改
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Referer': 'http://www.hsej.net/app/thirdparty/payorder?needLogin=1&target=http%3A%2F%2Fpay.hsej.net%2FSignUp%2FIndex&c=rRaDxC2Jdtc=&u=1Pj5IWQtkeg=&p=oTU7yIMCKx7mwWtrHagi/A==&ut=1&ct=56&token=QXaY9rWroKIMvazwf1OMAgMPphBvWsr%2Fy7IGAHLJeQgzsH1508Y85dIfbofhiWsyVr0ibHtF5qjk%0AzmHv3WsMBRKIJWJ2ldyCgYXo9iBqve%2F0EJBaOZ%2F7%2Bg%3D%3D',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,en-US;q=0.9',
'cookie': 'ASP.NET_SessionId=dy3zvvtjztapzbybc11rdlbc',
'X-Requested-With': 'com.zhuochuang.hsej'
}
html = requests.get(url,headers = headers).text
html = re.findall(pattern, html)
print(html)
get_html()
获取列表类型的数据:
['4.51']
2)判断,定时执行上面写的查询模块
找一个定时执行的例子
添加判断语句
# coding:utf8
# https://blog.csdn.net/t8116189520/article/details/78832548
import datetime
import time
import send_email
def doSth():
# 把爬虫程序放在这个类里
send_email.sendEmail()
print(u'这个程序要开始疯狂的运转啦')
# 一般网站都是1:00点更新数据,所以每天凌晨一点启动
def main(): # h=1, m=0
while True:
# now = datetime.datetime.now()
# # print(now.hour, now.minute)
# if now.hour == h and now.minute == m:
# break
# # 每隔60秒检测一次
time.sleep(30)
if send_email.power < 2.00:
print('电量不足')
doSth()
else:
print('电量充足')
main()
3)提醒方式
以下是一些提醒:
1. 发送短信
2. 微信公众号提醒
3. 发送邮件
由于暂时没有云服务器,所以大一的时候只用过一两次,然后学习的时候就把脚本放到了云服务器上(希望不要太久,毕竟要毕业了,所以不用检查电了。不过弟弟妹妹们可以用...)
我找到了一个发送邮件的例子,于是拿来测试一下:
# https://blog.csdn.net/sunhuaqiang1/article/details/70833199
import smtplib
from email.header import Header
from email.mime.text import MIMEText
import hsej_get_power
# 第三方 SMTP 服务
mail_host = "smtp.qq.com" # SMTP服务器
mail_user = "1006953367@qq.com" # 用户名
mail_pass = "XXXXXXXXXX" # 授权码,非登录密码
sender = '1006953367@qq.com' # 发件人邮箱(最好写全, 不然会失败)
receivers = 'XXXXXXXX@qq.com' # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
#复制过来的代码修改了下面这里
power = eval(hsej_get_power.get_html()[0]) # 转换成float类型
content = str(power)
title = '剩余电量' # 邮件主题
def sendEmail():
message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
# if __name__ == '__main__':
# sendEmail()
# receiver = '***'
# send_email2(mail_host, mail_user, mail_pass, receiver, title, content)
4)最终测试
运行步骤2)中编写的自动运行代码,去掉判断语句,发送邮件成功
手机微信已开启邮件接收,电池数据已成功接收。
4.51...是否充电,我不开空调...
再次在csdn博客上发表了我不成熟的学习经历。 我知识有限,希望自己能在未来有所作为。