Background: 学车好累,要考四个科目,修好多学时;冬天学车惨无人道,早五点半起床,伸手不见五指;帝都学车的人好多,提前一周放号抢起来简直丧心病狂,与秒杀春节火车票没啥区别,服务器都挤爆了。
Methods: 方法就是回去攒积人品和练习反应速度,炉火纯青之时,也就是学成之日→→ → →。 还有方法就是学习抢火车票插件的有余票提示,因为总会有人临时有事退约,时不时的登陆查看太伤神,也不是21世纪青年的作风。
WorkFlow: 1.Python-Urllib2模拟浏览器登陆 2.下载登陆后约车页面信息 3.对信息进行正则化表达式匹配 4.定时刷新捕捉,并判断是否在登陆状态 5.符合要求通知/符合要求自动提交
Code:[状态:未完成4,5] 1.模拟登陆(环境python2.7.8+Pydev for Eclipse
) 以远大页面为例,是asp.net页面,打开浏览器登录页面,F12
调出开发者工具,找到Network
栏,刷新一下页面,筛选出POST方法的页面,并判断帐号提交页。分析cookies,喂给对应项。如下面code,模拟登录页面。不知道为什么,明明预留了验证码校验的和产生页,给拿掉了,这方便了登录和刷新了,要是有验证码的话,自动登录还需要验证码识别,不知道大牛博客里说的借助360火车票识别验证码的那个端口可不可行,这里不管了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 Created on 2015 年1 月15 日 @author: ZH ''' # -*- coding: utf-8 -*- ''' Urllib2 excercise 训练 ''' import urllib,urllib2,cookielib # NAME=raw_input('input UserName:') # PASSWORD=raw_input('input Password:') ##函数体## def YDJXLogin(url,user,password): login_page = 'http://yuanda.bjxueche.net/Login.aspx' #以远大驾校页面测试 cj = cookielib.CookieJar() opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) #reqlg = urllib2.Request(url=login_page) opener.addheaders= [('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')] opener.addheaders= [('Referer', 'http://yuanda.bjxueche.net/Login.aspx')] #模拟firefox浏览器登录 opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0')] para = urllib.urlencode({"__VIEWSTATE":"/wEPDwUKMTg0NDI4MDE5OGRkFUZOE3C7QQL4pJ/OooIN7IVnK5Qfznhym5mN84V5JNQ=", "__EVENTVALIDATION":"/wEWBgKyrJC6AwKl1bKzCQK1qbSRCwLoyMm8DwLi44eGDAKAv7D9CmhsXW9MljUvafu1DHCUaQFrdAWsE0NBXcwobLtWNjsS", "txtUserName":user, "txtPassword":password, "txtIMGCode":"", "BtnLogin":"登 录", "rcode":"" }) opener.open(login_page, para) op = opener.open(url) data = op.read() return data print YDJXLogin("http://yuanda.bjxueche.net/index.aspx",370xxxxxxxxxxxxxxx,xxxxxx) #以远大驾校页面测试
2.之后难题待攻克,有时间再研究。纯属爱好,不恶意刷新。如有那啥,及时删除。