前言:大家跟我一起念,Python***好,跟着本宝宝用Python抢火车票
首先我们需要splinter
安装:
pip install splinter -i http://pypi.**.com/simple --trusted-host pypi.**.com
然后还需要一个浏览器的驱动,当然用chrome啦
下载地址:
http://chromedriver.storage.googleapis.com/index.html?path=2.20/
根据下载的自己的电脑系统选择下载包,我的windows就用win32了
解压后直接放到C:\Windows\System32目录下,你当然也可以给这个驱动程序弄个环境变量。
注意:我下的驱动版本是2.19的,根据自己需要下载相应版本,我的2.20版本有报错
首先简单的测试一下吧,推荐ipython代替python自带的交互界面
[size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
| [size=1em][size=1em]from splinter.browser import Browser
[size=1em]
[size=1em]b = Browser(driver_name="chrome")
[size=1em]
[size=1em]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”我”
[size=1em]1
| [size=1em][size=1em]b.fill("wd","splinter")
|
有意思的事,你会发现你都不需要点击“百度一下”就到搜索页面了
但是,如果多次搜索,我们还是需要点击“百度一下”的
下面就不在带着大家找这些元素的id,value什么的了,通过chrome的F12找自己需要的吧
那么把点击栏find出来吧
我们发现,百度搜索栏的value=”百度一下”,id=”su”
所以把这个按钮提取出来
[size=1em]1
[size=1em]2
[size=1em]3
| [size=1em][size=1em]button = b.find_by_value(u"百度一下")
[size=1em]或者
[size=1em]button = b.find_by_id(u"su")
|
[size=1em]1
[size=1em]2
| [size=1em][size=1em]怎么点击呢?简单如下
[size=1em]button.click()
|
这有什么用?
我们找找页面里有没有我想找的东西吧,比如找找有没有这个地址“splinter.cobrateam.info”
[size=1em]1
| [size=1em][size=1em]b.is_text_present("splinter.cobrateam.info")
|
如果该页面存在,则返回True,反之亦然
怎么退出呢?
[size=1em]1
| [size=1em][size=1em]b.quit()
|
好吧,上面就是参照官方文档写的一个简单的入门教程了,下面我们进入正题吧~~~
个人是觉得授人以鱼不如授人以渔的,所以我尽量讲解所有的内容,而非发个代码,让大家copy一下,然后不求甚解。
值得注意的是,我不会去说什么怎么破解验证码以及有什么漏洞可以利用什么的,抢过票的都知道,快一点是一点,而我要做的是就能将机器能做的交给机器做,比如点击,查询,选择等,所以希望必中的还是绕过此文吧。笔者水平也就这么一点点。
首先我们用ipython讲解一下思路
开始当然是导入啦。。
[size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em]7
[size=1em]8
[size=1em]9
[size=1em]10
| [size=1em][size=1em]from splinter.browser import Browser
[size=1em]
[size=1em]b = Browser(driver_name="chrome")
[size=1em]
[size=1em]
[size=1em]url = “https://kyfw.12306.cn/otn/leftTicket/init”
[size=1em]
[size=1em]b = Browser(driver_name="chrome")
[size=1em]
[size=1em]b.visit(url)
|
第一步手动登陆,能通过下面的代码填充表单,但是我跳不过验证码,暂时没有精力去研究那东西,多多见谅,所以还是等手动选择验证码的。
[size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
| [size=1em][size=1em]b.find_by_text(u"登录").click()
[size=1em]
[size=1em] b.fill("loginUserDTO.user_name","xxxx")
[size=1em]
[size=1em]b.fill("userDTO.password","xxxx")
|
最后希望,大家都能买到火车票回家过年~~~
本文出自 “又耳笔记” 博客,出处http://youerning.blog.51cto.com/10513771/1719159
