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 Tkinter GUI编程入门介绍
Mar 10 Python
用Python制作简单的朴素基数估计器的教程
Apr 01 Python
详解Django通用视图中的函数包装
Jul 21 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
Python实现网站表单提交和模板
Jan 15 Python
python中单下划线(_)和双下划线(__)的特殊用法
Aug 29 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
Python有参函数使用代码实例
Jan 06 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
Feb 29 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
Python音乐爬虫完美绕过反爬
Aug 30 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运算符的知识大全
2011/11/03 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
php 猴子摘桃的算法
2017/06/20 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
python多线程抽象编程模型详解
2019/03/20 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
深入了解python列表(LIST)
2020/06/08 Python
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
Linux Interview Questions For software testers
2012/06/02 面试题
超市营业员岗位职责
2013/12/20 职场文书
高三英语教学反思
2014/01/13 职场文书
土建工程师岗位职责
2014/06/10 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
Python与C++中梯度方向直方图的实现
2022/03/17 Python
Docker部署Mysql8的实现步骤
2022/07/07 Servers