python结合selenium获取XX省交通违章数据的实现思路及代码


Posted in Python onJune 26, 2016

前言:

目前在研究易信公众号,想给公众号增加一个获取个人交通违章的查询菜单,通过点击返回查询数据。以下是实施过程。

一、首先,用火狐浏览器打开XX省交管网,分析页面信息:

python结合selenium获取XX省交通违章数据的实现思路及代码

可以看到共有4种查询种类,我只要查询违章数据,所以分析第一个电子警察信息查询就好了,用firebug分别查看车牌号码、车辆识别码、验证码输入框,可以得到id属性,分别为:carNum1、carAuthCode1、captcha1。

到这里,我们可以用selenium根据获取的id,自动填入车牌号码、车辆识别码、验证码,但验证码如何获取呢?。

二、获取验证码

第一次、通过Tesseract识别

经过测试,识别率太低了,不可行。

第二次、通过cookies查找验证码

通过查看服务器返回的cookies,发现里面竟然有验证码。。。

 python结合selenium获取XX省交通违章数据的实现思路及代码

三、编写程序测试

1、流程图和测试结果

python结合selenium获取XX省交通违章数据的实现思路及代码python结合selenium获取XX省交通违章数据的实现思路及代码

2、源代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class JTWZ():
def __init__(self,carAuthCode,carNum):
"""
carAuthCode:车辆识别码
carNum:车牌号
"""
self.driver = webdriver.Chrome()
self.url = 'http://xxcx.hbsjg.gov.cn:8087/hbjj/'
self.carAuthCode=carAuthCode
self.carNum=carNum
def get_content(self):
self.driver.get(self.url)
try:
element = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "checkCode1")))
print(u'开始登录...')
except Exception as e:
print(e) 
self.carNum1 = self.driver.find_element_by_id('carNum1')
self.carNum1.send_keys(self.carNum)
self.carAuthCode1 = self.driver.find_element_by_id('carAuthCode1')
self.carAuthCode1.send_keys(self.carAuthCode)
captcha1=self.driver.find_element_by_id('captcha1')
#从cookies找寻验证码
for n in self.driver.get_cookies():
if n.get('name')!=None and n['name']=='RANDOMVALIDATECODEKEY1':
checkCode1=n['value']
captcha1.send_keys(checkCode1)
sub=self.driver.find_element_by_xpath("//input[@value='开始查询']")
sub.click()
try:
element = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "fsmiddle")))
print(u'获取违章内容成功,保存为:wz.jpg...')
self.driver.save_screenshot('wz.jpg')
return 0
except:
print(u'获取失败...') 
return 1
finally:
self.driver.quit()
if __name__ == '__main__':
jtwz=JTWZ(carAuthCode=000,carNum='')
jtwz.get_content()
Python 相关文章推荐
Python greenlet实现原理和使用示例
Sep 24 Python
python中global用法实例分析
Apr 30 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
分享一个简单的python读写文件脚本
Nov 25 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
python 实现兔子生兔子示例
Nov 21 Python
Python3 io文本及原始流I/O工具用法详解
Mar 23 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
利用Opencv实现图片的油画特效实例
Feb 28 Python
python3实现无权最短路径的方法
May 12 Python
python实现学生信息管理系统(面向对象)
Jun 05 Python
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 #Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 #Python
Python的装饰器用法学习笔记
Jun 24 #Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 #Python
深入解析Python编程中super关键字的用法
Jun 24 #Python
深入了解Python数据类型之列表
Jun 24 #Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 #Python
You might like
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
JS打印组合功能
2016/08/04 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
python中map()函数的使用方法示例
2017/09/29 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
Python类的动态绑定实现原理
2020/03/21 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
生产副总岗位职责
2013/11/28 职场文书
小学音乐教学反思
2014/02/05 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
迎七一演讲稿
2014/09/12 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server