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 相关文章推荐
[原创]使用豆瓣提供的国内pypi源
Jul 02 Python
使用python装饰器计算函数运行时间的实例
Apr 21 Python
python在文本开头插入一行的实例
May 02 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
python求最大连续子数组的和
Jul 07 Python
Python获取网段内ping通IP的方法
Jan 31 Python
实例详解Python模块decimal
Jun 26 Python
Django的models中on_delete参数详解
Jul 16 Python
Python的垃圾回收机制详解
Aug 28 Python
Python 使用多属性来进行排序
Sep 01 Python
Tensorflow实现将标签变为one-hot形式
May 22 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
laravel 事件/监听器实例代码
2019/04/12 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
python实现二叉树的遍历
2017/12/11 Python
django foreignkey(外键)的实现
2019/07/29 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
Python文件操作方法详解
2020/02/09 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
一个精品风格的世界:Atterley
2019/05/01 全球购物
酒吧总经理岗位职责
2013/12/10 职场文书
企业内控岗位的职责
2014/02/07 职场文书
生产部岗位职责范文
2014/02/07 职场文书
合作意向协议书范本
2014/03/31 职场文书
家庭困难证明
2014/10/12 职场文书
困难补助申请报告
2015/05/19 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL