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使用cookie库操保存cookie详解
Mar 03 Python
Python的迭代器和生成器使用实例
Jan 14 Python
Python中多线程及程序锁浅析
Jan 21 Python
Python程序中设置HTTP代理
Nov 06 Python
Python正则表达式和元字符详解
Nov 29 Python
Python实战之制作天气查询软件
May 14 Python
django 使用全局搜索功能的实例详解
Jul 18 Python
Django的Modelforms用法简介
Jul 27 Python
Python如何实现邮件功能
May 27 Python
Python类的继承super相关原理解析
Oct 22 Python
python 下载文件的几种方法汇总
Jan 06 Python
Python基础之条件语句详解
Jun 16 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执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
php 修改密码实现代码
2017/05/24 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
js实现点击烟花特效
2020/10/14 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
Python笔记之代理模式
2019/11/20 Python
python中format函数如何使用
2020/06/22 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
JSP&Servlet技术面试题
2015/05/21 面试题
青年文明号事迹材料
2014/01/18 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
红色影片观后感
2015/06/18 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
应届生个人的求职(自荐信范文2篇)
2019/08/23 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python
python办公自动化之excel的操作
2021/05/23 Python