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 client使用http post 到server端的代码
Feb 10 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
pandas分别写入excel的不同sheet方法
Dec 11 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 Python
基于python 微信小程序之获取已存在模板消息列表
Aug 05 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
把vgg-face.mat权重迁移到pytorch模型示例
Dec 27 Python
利用Python脚本实现自动刷网课
Feb 03 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
浅谈php处理后端&接口访问超时的解决方法
2016/10/29 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
python使用KNN算法手写体识别
2018/02/01 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
PyQt 如何创建自定义QWidget
2021/03/24 Python
生物技术研究生自荐信
2013/11/12 职场文书
大学生预备党员自我评价分享
2013/11/16 职场文书
优质服务演讲稿
2014/05/14 职场文书
诉讼授权委托书
2014/10/15 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
法制工作总结2015
2015/07/23 职场文书
python xlwt模块的使用解析
2021/04/13 Python