12306的失常验证码算什么?我有Python神器!
副问题[/!--empirenews.page--]
媒介:各人跟我一路念,Python 大Fa好,随着本宝宝用Python抢火车票! 起首我们必要splinter 安装: pip install splinter -i http://pypi.douban.com/simple –trusted-host pypi.douban.com 然后还必要一个赏识器的驱动,虽然用chrome啦 下载地点: http://chromedriver.storage.googleapis.com/index.html?path=2.20/ 按照下载的本身的电脑体系选择下载包,我的windows就用win32了 解压后直接放到C:WindowsSystem32目次下,你虽然也可以给这个驱动措施弄个情形变量。 留意:我下的驱动版本是2.19的,按照本身必要下载响应版本,我的2.20版本有报错 起首简朴的测试一下吧,保举ipython取代python自带的交互界面 from splinter.browser import Browser b = Browser(driver_name="chrome") b.visit("http://www.baidu.com") ###留意不要去掉http:// 然后牛刀小试一下吧,用百度搜刮一些对象。好比splinter 在上面我们已经打开百度的网址了 然后我们输入一些像搜刮的内容吧 由上可以发明,该输入框的name=wd,通过fill好像只能通过name添补 官方声名: Fill the field identified by name with the content specified by value. 那就在输入框搜刮splinter,虽然也可以输入中文,可是最好指定Unicode编码,如u”我” b.fill("wd","splinter") 故意思的事,你会发明你都不必要点击“百度一下”就到搜刮页面了 可是,假如多次搜刮,我们照旧必要点击“百度一下”的 下面就不在带着各人找这些元素的id,value什么的了,通过chrome的F12找本身必要的吧 那么把点击栏find出来吧 我们发明,百度搜刮栏的value=”百度一下”,id=”su” 以是把这个按钮提取出来 button = b.find_by_value(u"百度一下") 可能 button = b.find_by_id(u"su") 怎么点击呢?简朴如下 button.click() 这有什么用? 我们找找页面里有没有我想找的对象吧,好比找找有没有这个地点“splinter.cobrateam.info” b.is_text_present("splinter.cobrateam.info") 假如该页面存在,则返回True,反之亦然 怎么退出呢? b.quit() 好吧,上面就是参照官方文档写的一个简朴的入门教程了,下面我们进入正题吧~~~ 小我私人是认为授人以鱼不如授人以渔的,以是我只管讲授全部的内容,而非发个代码,让各人copy一下,然后不求甚解。 值得留意的是,我不会去说什么怎么破解验证码以及有什么裂痕可以操作什么的,抢过票的都知道,快一点是一点,而我要做的是就能将呆板能做的交给呆板做,好比点击,查询,选择等,以是但愿必中的照旧绕过此文吧。笔者程度也就这么一点点。 起首我们用ipython讲授一下思绪 开始虽然是导入啦。。 from splinter.browser import Browser b = Browser(driver_name="chrome") url = “https://kyfw.12306.cn/otn/leftTicket/init” b = Browser(driver_name="chrome") b.visit(url) 第一步手动登岸,能通过下面的代码添补表单,可是我跳不外验证码,暂且没有精神去研究那对象,多多留情,以是照旧等手动选择验证码的。 b.find_by_text(u"登录").click() b.fill("loginUserDTO.user_name","xxxx") b.fill("userDTO.password","xxxx") 第二部选择出发所在日期等 通过cookies选择出发所在,日期及目标地 起首瞧瞧我们的cookies虽然是没有的出发日期什么的 至于你的出发所在及目标地对付的cookies值是什么,就得靠本身去copy了,我帮不了 怎么有的这些值? 先将所在日期输进去查询一下,然后chrome按F12 找到这一部门即可 打开赏识器跳到这个页面虽然是没有我们必要的信息的,好比下面这样 b.cookies.all() {u'BIGipServerotn': u'1977155850.38945.0000', u'JSESSIONID': u'0A01D97598F459F751C4AE8518DBFB300DA7001B67', u'__NRF': u'95D48FC2E0E15920BFB61C7A330FF2AE', u'current_captcha_type': u'Z'} 然后我们必要添加出发地,这个得本身去查了,是简朴的url加密 b.cookies.add({"_jc_save_fromStation":"%u4E0A%u6D77%2CSHH"}) 添加出发日期 b.cookies.add({"_jc_save_fromDate":"2016-01-20"}) 添加目标地 b.cookies.add({u'_jc_save_toStation':'%u6C38%u5DDE%2CAOQ'}) 注:假如是修改的话,照旧挪用add要领,假如传入的字典key值已存在则替代 好比,将目标地改为其他处所xxxx,如下即可 b.cookies.add({u'_jc_save_toStation':'xxxxxx'}) (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |