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查找函数f(x)=0根的解决方法
May 07 Python
Python探索之创建二叉树
Oct 25 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
Dec 19 Python
对python中执行DOS命令的3种方法总结
May 12 Python
在VS2017中用C#调用python脚本的实现
Jul 31 Python
python中web框架的自定义创建
Sep 08 Python
python模块导入的方法
Oct 24 Python
wxPython之wx.DC绘制形状
Nov 19 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
使用python+poco+夜神模拟器进行自动化测试实例
Apr 23 Python
python 图像增强算法实现详解
Jan 24 Python
Django+Celery实现定时任务的示例
Jun 23 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读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
python下如何让web元素的生成更简单的分析
2008/07/17 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
2016/09/18 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
python的中异常处理机制
2018/08/30 Python
python os.path模块常用方法实例详解
2018/09/16 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
python 函数中的参数类型
2020/02/11 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
python pip如何手动安装二进制包
2020/09/30 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
面试后感谢信怎么写
2014/02/01 职场文书
圣诞节红领巾广播稿
2014/02/03 职场文书
电子商务专业自荐信
2014/06/02 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL