[Python爬虫]使用Selenium操作浏览器订购火车票
这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分
[Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium)
[Python爬虫]使用Python爬取动态网页-豆瓣电影(JSON)
[Python爬虫]使用Selenium操作浏览器订购火车票
上节我们说了如何使用selenium打开网页做些简单操作
这节内容为操作浏览器自动订购12306火车票
开发环境
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路径,但是不推荐直接引用
详细教程查看如下网站
http://www.aibbt.com/a/18046.html
模块安装
pip3 install selenium
Chrome Driver 下载
这里我们下载Chrome driver
其他的driver见官网
http://selenium-python.readthedocs.io/installation.html#drivers
下载完成后可以放到系统环境变量中,如:
C:\Windows\System32
https://sites.google.com/a/chromium.org/chromedriver/downloads
程序原理
代码介绍
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. 判断是否登陆成功
7. 选择出发地,目的地,时间后点击查询
8. 填写需要订购的火车车次
多个车次使用列表形式,冒号后面位表格的ID属性值,不包括ticket_
tickets=['D3094:5l000D309460','G7024:51000d702454']
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
以及是否有票
11. 确认选座
执行结果
注意事项:
- 打开新的页面请使用selenium wait功能以使页面完全加载
- 最后提交的时候可能会需要再次输入用户名密码,输入即可
- 本脚本仅用于学习用途
- http://www.aibbt.com/a/18046.html
源码位置:
源码请访问我的github主页也可点击阅读全文:
https://github.com/bsbforever/spider/blob/master/selenium_12306.py
[Python爬虫]使用Selenium操作浏览器订购火车票的更多相关文章
- python爬虫:使用Selenium模拟浏览器行为
前几天有位微信读者问我一个爬虫的问题,就是在爬去百度贴吧首页的热门动态下面的图片的时候,爬取的图片总是爬取不完整,比首页看到的少.原因他也大概分析了下,就是后面的图片是动态加载的.他的问题就是这部分动 ...
- Python 爬虫利器 Selenium 介绍
Python 爬虫利器 Selenium 介绍 转 https://mp.weixin.qq.com/s/YJGjZkUejEos_yJ1ukp5kw 前面几节,我们学习了用 requests 构造页 ...
- Python爬虫之selenium的使用(八)
Python爬虫之selenium的使用 一.简介 二.安装 三.使用 一.简介 Selenium 是自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏 ...
- Python爬虫之selenium高级功能
Python爬虫之selenium高级功能 原文地址 表单操作 元素拖拽 页面切换 弹窗处理 表单操作 表单里面会有文本框.密码框.下拉框.登陆框等. 这些涉及与页面的交互,比如输入.删除.点击等. ...
- Python爬虫之selenium库使用详解
Python爬虫之selenium库使用详解 本章内容如下: 什么是Selenium selenium基本使用 声明浏览器对象 访问页面 查找元素 多个元素查找 元素交互操作 交互动作 执行JavaS ...
- 每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)
每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)
- Python爬虫之selenium爬虫,模拟浏览器爬取天猫信息
由于工作需要,需要提取到天猫400个指定商品页面中指定的信息,于是有了这个爬虫.这是一个使用 selenium 爬取天猫商品信息的爬虫,虽然功能单一,但是也算是 selenium 爬虫的基本用法了. ...
- python爬虫利器Selenium使用详解
简介: 用pyhon爬取动态页面时普通的urllib2无法实现,例如下面的京东首页,随着滚动条的下拉会加载新的内容,而urllib2就无法抓取这些内容,此时就需要今天的主角selenium. Sele ...
- python爬虫之selenium、phantomJs
图片懒加载技术 什么是图片懒加载技术 图片懒加载是一种网页优化技术.图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时 ...
随机推荐
- Go基础之--反射
反射:可以在运行时动态获取变量的相关信息 反射需要导入reflect 反射中重要函数的演示 反射有几下几个重要的函数:reflect.TypeOf :获取变量的类型,返回reflect.Type类型r ...
- 在Android上编写模块化项目(翻译)
来源博客:Wang Jie's Blog 本文链接:http://blog.wangjiegulu.com/2018/02/13/writing_a_modular_project_on_androi ...
- Python面向对象篇(3)-封装、多态、反射及描述符
1. 多态 多态,最浅显的意识就是同一事物具有多种形态,这很好理解,动物是一个大类,猫类属于动物类,狗类属于动物类,人也是属于动物类,那能理解成,猫.狗.人是一样的吗?当然不是,还有,水,分为液体.固 ...
- [转载]LVS+Keepalived之三大模式
LVS + Keepalived之三大模式 ============================================================================== ...
- pinvoke 数据交互笔记
intptr to array string string[] _outputStrArray=null; int channelCount = 0;///返回数组大小 In ...
- C++ 11 左值,右值,左值引用,右值引用,std::move, std::foward
这篇文章要介绍的内容和标题一致,关于C++ 11中的这几个特性网上介绍的文章很多,看了一些之后想把几个比较关键的点总结记录一下,文章比较长.给出了很多代码示例,都是编译运行测试过的,希望能用这些帮助理 ...
- maven中的profile文件的解析
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Wireshark理解TCP乱序重组和HTTP解析渲染
TCP数据传输过程 TCP乱序重组原理 HTTP解析渲染 TCP乱序重组 TCP具有乱序重组的功能.(1)TCP具有缓冲区(2)TCP报文具有序列号所以,对于你说的问题,一种常见的处理方式是:TCP会 ...
- 【java学习笔记】文件操作
文件操作 java.io.File ①创建删除文件及目录 ②查看文件及目录属性 ③文件过滤器 (PS:不包括文件读写数据) 1.单个文件 创建单个文件,查看属性,删除单个文件. package tmp ...
- python 循环语句 函数 模块
python循环语句 while循环语法结构 当需要语句不断的重复执行时,可以使用while循环 while expression: while_suite 语句ehile_suite会被连续不断的循 ...