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中的魔法方法深入理解
Jul 09 Python
使用python开发vim插件及心得分享
Nov 04 Python
python中logging库的使用总结
Oct 18 Python
python实现感知器算法详解
Dec 19 Python
python+pillow绘制矩阵盖尔圆简单实例
Jan 16 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
numpy下的flatten()函数用法详解
May 27 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
python程序文件扩展名知识点详解
Feb 27 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
Apr 08 Python
超全Python图像处理讲解(多模块实现)
Apr 13 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 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入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
PHP小教程之实现链表
2014/06/09 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
JS date对象的减法处理实现代码
2010/12/28 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
详解参数传递四种形式
2015/07/21 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
深入理解Python中变量赋值的问题
2017/01/12 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
Python实现序列化及csv文件读取
2020/01/19 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
python speech模块的使用方法
2020/09/09 Python
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
网站开发实习生的自我评价
2013/12/11 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书