所需要的依赖
pip install requests
pip install apscheduler
脚本
import requests,re
from urllib.parse import urlparse
from urllib.parse import quote
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
}
base_url = 'http://192.168.2.135'
login_url = base_url + '/eportal/InterFace.do?method=login'
params_url_comp = re.compile("href='(.*?)'")
class Spider:
redirect_url_query = ''
def __init__(self,username,password,service='电信出口'):
self.sess = requests.session()
self.service = quote(service)
self.username = username
self.password = password
def run(self):
res = self.get_home()
if self.is_login(res):
return
self.login()
def get_home(self):
res = self.sess.get(base_url,headers=headers)
return res
def is_login(self,res):
if res.url == 'http://123.123.123.123/':
redirect_url = params_url_comp.findall(res.text)[0]
self.redirect_url_query = urlparse(redirect_url).query
if self.redirect_url_query == '':
print('is login')
return True
print('get login query string:',self.redirect_url_query)
return False
else:
print('is login')
return True
def login(self):
login_post_data = {
"userId": self.username,
"password": self.password,
"service": self.service,
"queryString": self.redirect_url_query,
"operatorPwd": "",
"operatorUserId": "",
"validcode": "",
"passwordEncrypt": "false"
}
res = self.sess.post(login_url,login_post_data)
print('login success')
username=''
password=''
def login_job():
now = datetime.now()
ts = now.strftime("%Y-%m-%d %H:%M:%S")
Spider(username= username,password=password).run()
print(ts + ':')
scheduler = BlockingScheduler()
scheduler.add_job(login_job, 'interval', seconds=60*5, id='login_job')
scheduler.start()