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 调用DLL操作抄表机
Jan 12 Python
Python实现SVN的目录周期性备份实例
Jul 17 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
Python进阶篇之字典操作总结
Nov 16 Python
Python 对象中的数据类型
May 13 Python
Python编程之gui程序实现简单文件浏览器代码
Dec 08 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
Nov 07 Python
基于Python实现拆分和合并GIF动态图
Oct 22 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
基于Python的一个自动录入表格的小程序
Aug 05 Python
4种非常实用的python内置数据结构
Apr 28 Python
python全面解析接口返回数据
Feb 12 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修改NetBeans默认字体的大小
2013/07/02 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
JavaScript入门基础
2015/08/12 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
在Python的Django框架下使用django-tagging的教程
2015/05/30 Python
Python函数式编程
2017/07/20 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
世界经理人咨询有限公司面试
2014/09/23 面试题
销售自我评价
2013/10/22 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
党的群众路线教育实践活动个人整改措施范文
2014/11/04 职场文书
英语辞职信范文
2015/02/28 职场文书
以权谋私检举信范文
2015/03/02 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
python内置进制转换函数的操作
2021/06/02 Python