Skip to content

Instantly share code, notes, and snippets.

@Fugoes
Created September 26, 2019 01:19
Show Gist options
  • Save Fugoes/580d9b13c17a5c7a5c0e54c9e6a701c7 to your computer and use it in GitHub Desktop.
Save Fugoes/580d9b13c17a5c7a5c0e54c9e6a701c7 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
import requests
import bs4
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--name', type=str, required=True)
parser.add_argument('--password', type=str, required=True)
args = parser.parse_args()
session = requests.session()
res = session.get('http://myhome.tsinghua.edu.cn')
res.encoding = 'gbk'
soup = bs4.BeautifulSoup(res.text, features='html.parser')
inputs = soup.find_all('input', recursive=True)
keys = [
'net_Default_LoginCtrl1$lbtnLogin.x',
'__VIEWSTATEGENERATOR',
'__VIEWSTATE',
'Home_Img_ActivityCtrl1$hfScript',
'Home_Vote_InfoCtrl1$Repeater1$ctl01$hfID',
'net_Default_LoginCtrl1$lbtnLogin.y',
'net_Default_LoginCtrl1$txtUserName',
'Home_Vote_InfoCtrl1$Repeater1$ctl01$rdolstSelect',
'Home_Img_NewsCtrl1$hfJsImg',
'net_Default_LoginCtrl1$txtSearch1',
'net_Default_LoginCtrl1$txtUserPwd'
]
data = dict()
for key in keys:
data[key] = None
for x in inputs:
if x['name'] in set(keys):
try:
if data[x['name']] is None:
data[x['name']] = x['value']
except KeyError:
pass
data['net_Default_LoginCtrl1$lbtnLogin.x'] = '22'
data['net_Default_LoginCtrl1$lbtnLogin.y'] = '12'
data['net_Default_LoginCtrl1$txtSearch1'] = ''
data['net_Default_LoginCtrl1$txtUserName'] = args.name
data['net_Default_LoginCtrl1$txtUserPwd'] = args.password
for k in data.keys():
data[k] = data[k].encode('gbk')
res = session.post('http://myhome.tsinghua.edu.cn/default.aspx', data=data)
res = session.get('http://myhome.tsinghua.edu.cn/Netweb_List/Netweb_Home_electricity_Detail.aspx')
res.encoding = 'gbk'
soup = bs4.BeautifulSoup(res.text, features='html.parser')
print(soup.find('span', {'id': 'Netweb_Home_electricity_DetailCtrl1_lblele'}).text)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment