__author__='ctr'
import urllib
import http.cookiejar
import re
import sys
import pytesser
import PIL
from pytesseract import *
from PIL import Image
from PIL import ImageEnhance
import os
import getpass
import msvcrt
import time
cj = http.cookiejar.CookieJar()
cookie_support = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(cookie_support, urllib.request.HTTPHandler)
urllib.request.install_opener(opener)
def pwd_input():
chars = []
while True:
try:
newChar = msvcrt.getch().decode(encoding="utf-8")
except:
return input("你很可能不是在cmd命令行下运行,密码输入将不能隐藏:")
if newChar in '\r\n':
break
elif newChar == '\b':
if chars:
del chars[-1]
msvcrt.putch('\b'.encode(encoding='utf-8'))
msvcrt.putch( ' '.encode(encoding='utf-8'))
msvcrt.putch('\b'.encode(encoding='utf-8'))
else:
chars.append(newChar)
msvcrt.putch('*'.encode(encoding='utf-8'))
return (''.join(chars) )
def denglu(usr,psw):
hosturl='http://wiscom.chd.edu.cn:8080/reader/'
posturl='http://wiscom.chd.edu.cn:8080/reader/redr_verify.php'
captcha=opener.open('http://wiscom.chd.edu.cn:8080/reader/captcha.php')
f=open('图书馆系统临时文件/1.jpg','wb')
buf=captcha.read()
f.write(buf)
f.close()
im=Image.open('图书馆系统临时文件/1.jpg').convert('L')
captcha=image_to_string(im)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36'}
postData = {'number':usr,'passwd':psw,'captcha':captcha,'select':'cert_no','returnUrl':''}
postData = urllib.parse.urlencode(postData).encode(encoding='UTF8')
request = urllib.request.Request(posturl,postData,headers)
flagg=False
try:
rt=opener.open(request)
text=rt.read().decode('UTF-8')
f=open('图书馆系统临时文件/1.html','w')
f.write(text)
f.close()
except urllib.request.URLError as e:
print('Login Failed [%s] ' %e.reason)
except urllib.request.HTTPError as e:
print ('Login Failed [%s] ' %e.code)
else:
pattern1=r"对不起,密码错误,请查实!"
pattern1=re.compile(pattern1)
matcher1 = pattern1.findall(text)
pattern2=r"wrong check code"
pattern2=re.compile(pattern2)
matcher2=pattern2.findall(text)
if matcher1:
print("对不起,密码错误,请查实!")
print("按回车键重新输入")
input()
flagg=False
elif matcher2:
print("对不起,我们的验证码识别出现问题,请重新登录")
print("按回车键重新输入")
input()
flagg=False
else:
flagg=True
return flagg
def convert(s):
s=s.strip('&#x;')
s=bytes(r'\u'+s,'ascii')
return s.decode('unicode_escape')
def lishi():
f=open('图书馆系统临时文件/lishi.html','r',encoding='utf-8')
text=f.read()
pattern2=r"<td bgcolor=\"#FFFFFF\"(.+?)>(.+?)</td>\s*?<(.+?)>(.+?)</td>\s*?<(.+?)><a(.+?)>(.+?)</a></td>\s*?<td(.+?)>(.+?)</td>\s*?<(.+?)>(.+?)</td>\s*?<(.+?)>(.+?)</td>\s*?<(.+?)>(.+?)</td>"
pattern2=re.compile(pattern2)
text2=pattern2.findall(text)
for t in text2:
pattern3=r"&#x.+?;"
pattern3=re.compile(pattern3);
text3=pattern3.findall(t[6])
pp=''
for text in text3:
pp+=convert(text)
pattern3=r"&#x.+?;"
pattern3=re.compile(pattern3);
text3=pattern3.findall(t[8])
tt=''
for text in text3:
tt+=convert(text)
print('编号:',t[1],'\n','--条码号:',t[3],'\n','--题名:',pp,'\n','--责任者:',tt,'\n','--借阅日期:',t[10],'\n','--归还日期:',t[12],'\n','--馆藏地:',t[14])
print('')
def dangqian():
f=open('图书馆系统临时文件/dangqian.html','r',encoding='utf-8')
textq=f.read()
f.close()
textt=textq
pattern=r"<b class=\"blue\">(.+?)</b>"
pattern=re.compile(pattern)
text1=pattern.findall(textq)
pattern=r"\">(.+?)</td>\s*?<td.+?><a.+?>(.+?)</a> (.+?)</td>\s*?<td.+?>(.+?)</td>\s*?<td.+?><font color=>(.+?)</font></td>\s*?<td.+?>(.+?)</td>\s*?<td.+?>(.+?)</td>\s*?<td.+?>(.+?)</td>"
pattern=re.compile(pattern)
text2=pattern.findall(textq)
cnt=0
for t in text2:
cnt=cnt+1
pattern3=r"&#x.+?;"
pattern3=re.compile(pattern3);
text3=pattern3.findall(t[1])
pp=''
for texttemp in text3:
pp+=convert(texttemp)
pattern3=r"&#x.+?;"
pattern3=re.compile(pattern3);
text3=pattern3.findall(t[2])
tt='/'
for texttemp in text3:
tt+=convert(texttemp)
print('编号:',cnt)
print('--条码号:',t[0])
print('--题名/责任者:',pp,tt)
print('--借阅日期:',t[3])
print('--应还日期:',t[4])
print('--续借量:',t[5])
print('--馆藏地:',t[6])
print('--附件:',t[7])
print('')
flagg=True
while flagg:
ch=input('是否选择续借?是:Y,否:N:')
if ch=='Y':
pattern=r"getInLib\(\'(.+?)\',\'(.+?)\'"
pattern=re.compile(pattern)
ids=pattern.findall(textt)
bookid=input('请输入续借书编号:')
captcha=opener.open('http://wiscom.chd.edu.cn:8080/reader/captcha.php')
f=open('图书馆系统临时文件/1.jpg','wb')
buf=captcha.read()
f.write(buf)
f.close()
im=Image.open('图书馆系统临时文件/1.jpg').convert('L')
captcha=image_to_string(im)
mtime=time.time()
posturl='http://wiscom.chd.edu.cn:8080/reader/ajax_renew.php?bar_code='+ids[int(bookid)-1][0]+'&check='+ids[int(bookid)-1][1]+'&captcha='+str(captcha)+'&time='+str(int(100*mtime))
rtd=opener.open(posturl)
textd=rtd.read().decode('UTF-8')
fd=open('图书馆系统临时文件/xujie.html','w')
fd.write(textd)
fd.close()
pattern4=r'<font color=red>(.+?)</font>'
pattern4=re.compile(pattern4)
textd=pattern4.findall(textd)
print(textd[0])
print('')
else:
print('')
flagg=False
def zhangmu():
f=open('图书馆系统临时文件/zhangmu.html','r',encoding='utf-8')
textz=f.read()
f.close()
pattern=r'总金额: \s*?\t\t\t\t\t(.+?)\s*?\(总金额=缴款-退款-超期免罚\)'
pattern=re.compile(pattern)
textz=pattern.findall(textz)
print(textz[0])
print('(总金额=缴款-退款-超期免罚)')
def query(usr,psw):
flag=True
while flag:
if denglu(usr,psw)==True:
t = os.system('cls')
for x in range(1,17):
for y in range(1,x*5):
print('>',end='')
print('')
time.sleep(0.3)
print('')
print(' 登录完毕! ')
time.sleep(3)
t = os.system('cls')
while flag:
for x in range(1,3):
print('')
print('---------------------------------1:输出基本信息---------------------------------')
print(' ')
print('---------------------------------2:输出到期信息---------------------------------')
print(' ')
print('---------------------------------3:输出历史信息---------------------------------')
print(' ')
print('---------------------------------4:输出当前借阅---------------------------------')
print(' ')
print('---------------------------------5:输出账目清单---------------------------------')
print(' ')
print('-----------------------------------6:退出系统-----------------------------------')
ch=input()
if ch=='1':
text=urllib.request.urlopen('http://wiscom.chd.edu.cn:8080/reader/redr_info.php').read().decode('UTF-8')
f=open('图书馆系统临时文件/jiben.html','w')
f.write(text)
f.close()
key=text
pattern1=r"\">(.+?)</span>(.+?)</TD>"
pattern1=re.compile(pattern1)
text=pattern1.findall(key)
for subtext in text:
print('---',subtext[0],subtext[1],' ')
print('')
if ch=='2':
text=urllib.request.urlopen('http://wiscom.chd.edu.cn:8080/reader/redr_info.php').read().decode('UTF-8')
key=text
pattern1=r"\">(.+?)\[<strong style=\"color:#F00;\">(.+?)</strong>"
pattern1=re.compile(pattern1)
text=pattern1.findall(key)
for subtext in text:
print('---',subtext[0],subtext[1],' ')
print('')
if ch=='3':
text=urllib.request.urlopen('http://wiscom.chd.edu.cn:8080/reader/book_hist.php?para_string=all').read()
f=open('图书馆系统临时文件/lishi.html','wb')
f.write(text)
f.close()
lishi()
if ch=='4':
text=urllib.request.urlopen('http://wiscom.chd.edu.cn:8080/reader/book_lst.php').read()
f=open('图书馆系统临时文件/dangqian.html','wb')
f.write(text)
f.close()
dangqian()
if ch=='5':
text=urllib.request.urlopen('http://wiscom.chd.edu.cn:8080/reader/account.php').read()
f=open('图书馆系统临时文件/zhangmu.html','wb')
f.write(text)
f.close()
zhangmu()
if ch=='6':
flag=False
input('按回车键继续')
t = os.system('cls')
else:
t = os.system('cls')
usr=input('输入账号:\n')
print('输入密码:')
psw=pwd_input()
print('')
if __name__ == '__main__':
if os.path.exists('图书馆系统临时文件')==False:
os.mkdir(r'图书馆系统临时文件')
t = os.system('cls')
for x in range(1,6):
print('')
print(' 长安大学图书馆查询系统v1.0')
print('')
print('')
print(' ——Developed By CTR')
print('')
print('')
input(' 按回车键进入')
t = os.system('cls')
for x in range(1,6):
print('')
print('输入账号:')
usr=input()
print('输入密码:')
psw=pwd_input()
print('')
query(usr,psw)