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天气预报采集器实现代码(网页爬虫)
Oct 07 Python
python调用新浪微博API项目实践
Jul 28 Python
python实现删除文件与目录的方法
Nov 10 Python
python获取当前时间对应unix时间戳的方法
May 15 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
Python实现选择排序
Jun 04 Python
python中单例常用的几种实现方法总结
Oct 13 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
python dumps和loads区别详解
Feb 04 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
js left,right,mid函数
2008/06/10 Javascript
javascript multibox 全选
2009/03/22 Javascript
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
vue中动态添加class类名的方法
2018/09/05 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
2019/08/02 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
python和pyqt实现360的CLable控件
2014/02/21 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
opencv3/C++ 平面对象识别&透视变换方式
2019/12/11 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
一套C#面试题
2013/10/09 面试题
法院实习人员自我鉴定
2013/09/26 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书