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的pyxmpp2中的主循环使其提高性能
Apr 24 Python
python连接MySQL数据库实例分析
May 12 Python
简单了解python模块概念
Jan 11 Python
python使用scrapy发送post请求的坑
Sep 04 Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 Python
在Python中定义一个常量的方法
Nov 10 Python
Python 实现微信防撤回功能
Apr 29 Python
selenium+python环境配置教程详解
May 28 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
python内存动态分配过程详解
Jul 15 Python
python爬虫学习笔记之pyquery模块基本用法详解
Apr 09 Python
Python利用命名空间解析XML文档
Aug 10 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
再次研究下cache_lite
2007/02/14 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
详解Python中with语句的用法
2015/04/15 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
Python装饰器语法糖
2019/01/02 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
Python 在局部变量域中执行代码
2020/08/07 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
入党积极分子思想汇报范文
2014/01/05 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
乡镇交通安全实施方案
2014/03/29 职场文书
个人租房协议书样本
2014/10/01 职场文书
2019财务转正述职报告
2019/06/27 职场文书
javascript对象3个属性特征
2021/11/17 Javascript
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby