这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分

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

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

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

[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路径,但是不推荐直接引用

详细教程查看如下网站

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. 确认选座

执行结果


注意事项:

  1. 打开新的页面请使用selenium wait功能以使页面完全加载
  2. 最后提交的时候可能会需要再次输入用户名密码,输入即可
  3. 本脚本仅用于学习用途
  4. http://www.aibbt.com/a/18046.html

源码位置:

源码请访问我的github主页也可点击阅读全文:

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

[Python爬虫]使用Selenium操作浏览器订购火车票的更多相关文章

  1. python爬虫:使用Selenium模拟浏览器行为

    前几天有位微信读者问我一个爬虫的问题,就是在爬去百度贴吧首页的热门动态下面的图片的时候,爬取的图片总是爬取不完整,比首页看到的少.原因他也大概分析了下,就是后面的图片是动态加载的.他的问题就是这部分动 ...

  2. Python 爬虫利器 Selenium 介绍

    Python 爬虫利器 Selenium 介绍 转 https://mp.weixin.qq.com/s/YJGjZkUejEos_yJ1ukp5kw 前面几节,我们学习了用 requests 构造页 ...

  3. Python爬虫之selenium的使用(八)

    Python爬虫之selenium的使用 一.简介 二.安装 三.使用 一.简介 Selenium 是自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏 ...

  4. Python爬虫之selenium高级功能

    Python爬虫之selenium高级功能 原文地址 表单操作 元素拖拽 页面切换 弹窗处理 表单操作 表单里面会有文本框.密码框.下拉框.登陆框等. 这些涉及与页面的交互,比如输入.删除.点击等. ...

  5. Python爬虫之selenium库使用详解

    Python爬虫之selenium库使用详解 本章内容如下: 什么是Selenium selenium基本使用 声明浏览器对象 访问页面 查找元素 多个元素查找 元素交互操作 交互动作 执行JavaS ...

  6. 每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

    每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

  7. Python爬虫之selenium爬虫,模拟浏览器爬取天猫信息

    由于工作需要,需要提取到天猫400个指定商品页面中指定的信息,于是有了这个爬虫.这是一个使用 selenium 爬取天猫商品信息的爬虫,虽然功能单一,但是也算是 selenium 爬虫的基本用法了. ...

  8. python爬虫利器Selenium使用详解

    简介: 用pyhon爬取动态页面时普通的urllib2无法实现,例如下面的京东首页,随着滚动条的下拉会加载新的内容,而urllib2就无法抓取这些内容,此时就需要今天的主角selenium. Sele ...

  9. python爬虫之selenium、phantomJs

    图片懒加载技术 什么是图片懒加载技术 图片懒加载是一种网页优化技术.图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时 ...

随机推荐

  1. vue端口号被占用如何解决

    vue端口占用问题 1. vue init webpack-simple#1.0 vue-webpack-simple-demo 2. cd vue-webpack-simple-demo 3. cn ...

  2. typedef struct 的用法

    typedef struct stu { int age; char name[20]; }stu,*pstu; stu stu1;相当于struct stu stu1; pstu pstu1;相当于 ...

  3. jquery validate 动态增加删除验证规则(转载)

    页面加载完成初始化form validate $("#user_regForm").validate({ errorPlacement: function(error, eleme ...

  4. iOS视频直播

    视频直播技术点 视频直播,可以分为 采集,前处理,编码,传输, 服务器处理,解码,渲染 采集: iOS系统因为软硬件种类不多, 硬件适配性比较好, 所以比较简单. 而Android端市面上机型众多, ...

  5. Shell脚本的颜色样式及属性控制

    首先看一下格式 echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 举例 echo -e "\033[41;36m 字体 \033[0m" ...

  6. 决策树--ID3 算法(一)

    Contents      1. 决策树的基本认识      2. ID3算法介绍      3. 信息熵与信息增益      4. ID3算法的C++实现 1. 决策树的基本认识    决策树是一种 ...

  7. sed 命令多行到多行的定位方式

    本文提要: sed 命令定位方式的分类 着重对 /pattern/,/pattern/ 的定位方式进行阐述 定位方式分类 总体上,只需要分为两类,即:x 和 x,y .如果在范围后加 ! 则表示取补集 ...

  8. webpack代码分离 ensure 看了还不懂,你打我(转)

    webpack异步加载的原理 webpack ensure相信大家都听过.有人称它为异步加载,也有人说做代码切割,那这 个家伙到底是用来干嘛的?其实说白了,它就是把js模块给独立导出一个.js文件的, ...

  9. 恢复Mysql丢失的root用户权限

      今天安装了某个程序时, 由于程序很傻X的 新建了一个 root@localhost 用户 并把 root权限全部改为了 no 这下 我也 傻X 了.服务器上所有程序都崩溃了. 此时即使用root用 ...

  10. Hdfs读取文件到本地总结

    总结了一下三个方法:hdfs自带 按字节复制 按行复制 (在java io里还有字符复制,暂且不提) 因为hdfs自带的,不知道为什么有些场合不能用,每次能下载的个数还不一定,所以就考虑自己按照jav ...