[Python爬虫]使用Selenium操作浏览器订购火车票

浏览: 2019

作者:宅必备
一个会写Python的Oracle DBA
个人公众号:宅必备

前文传送门:

[Python程序]利用微信企业号发送报警信息

[Python爬虫]使用Python爬取静态网页-斗鱼直播

 [Python爬虫]使用Python爬取动态网页-豆瓣电影(JSON)

 [Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium)

上节我们说了如何使用selenium打开网页做些简单操作

这节内容为操作浏览器自动订购12306火车票

开发环境

操作系统:windows 10

Python版本 :3.6

爬取网页模块:selenium

分析网页工具:xpath

关于Selenium

selenium 是一个Web自动测试的工具,可以用来操作一些浏览器Driver,例如Chrome,Firefox等,也可以使用一些headless的driver,例如Phantomjs

具体请参加官网:

 http://selenium-python.readthedocs.io/

关于xpath

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。

XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。

因此,对 XPath 的理解是很多高级 XML 应用的基础。

selenium可以使用xpath的形式来定位网页元素,我们可以通过开发者模式的来获取xpath路径,但是不推荐直接引用

image.png

详细教程查看如下网站

http://www.w3school.com.cn/xpath/index.asp

模块安装

 pip3 install selenium

Chrome Driver 下载

这里我们下载Chrome driver

其他的driver见官网

 http://selenium-python.readthedocs.io/installation.html#drivers

image.png

下载完成后可以放到系统环境变量中,如:

  C:\Windows\System32

image.png

https://sites.google.com/a/chromium.org/chromedriver/downloads

程序原理

image.png

代码介绍

1. import相关的模块

import selenium.webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

2. 调用Chrome

driver = selenium.webdriver.Chrome()

3. 定位用户名密码

find_element_by_id表示使用id属性进行查找input标签

username= driver.find_element_by_id('username')

password= driver.find_element_by_id('password')

4. 清除用户名密码输入框内容

username.clear()

password.clear()

5. 自动输入用户名密码

username.send_keys("username")

password.send_keys("password")

6. 判断是否登陆成功

image.png

7. 选择出发地,目的地,时间后点击查询

image.png

8. 填写需要订购的火车车次

多个车次使用列表形式,冒号后面位表格的ID属性值,不包括ticket_

tickets=['D3094:5l000D309460','G7024:51000d702454']

image.png

9.获取预定,二等座,无座的xpath

yd_path='//*[@id="ticket_'+path+'"]/td[13]/a'

edz_path='//*[@id="ticket_'+path+'"]/td[4]'

wz_path = '//*[@id="ticket_' + path + '"]/td[11]'

10. 判断是否可订购

该语句表示判断是否可点击,超时时间为10s

以及是否有票

image.png

11. 确认选座

image.png

执行结果

image.png


注意事项:

  1. 打开新的页面请使用selenium wait功能以使页面完全加载

  2. 最后提交的时候可能会需要再次输入用户名密码,输入即可

  3. 本脚本仅用于学习用途

源码位置:

源码请访问我的github主页:

https://github.com/bsbforever/spider/blob/master/selenium_12306.py



Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复课程即可获取

小编的Python入门视频课程!!!

崔老师爬虫实战案例免费学习视频。

丘老师数据科学入门指导免费学习视频。

陈老师数据分析报告制作免费学习视频。

玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

丘老师Python网络爬虫实战免费学习视频。

image.png

推荐 0
本文由 Python爱好者社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册