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使用beautifulsoup从爱奇艺网抓取视频播放
Jan 23 Python
Python time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
Python 如何访问外围作用域中的变量
Sep 11 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
python logging模块的使用总结
Jul 09 Python
如何通过python实现全排列
Feb 11 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
Python requests HTTP验证登录实现流程
Nov 05 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 Python
Python try except else使用详解
Jan 12 Python
Python绘制分类图的方法
Apr 20 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使用百度翻译api示例分享
2014/01/31 PHP
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
jQuery 操作XML入门
2008/12/25 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
深入浅析python的第三方库pandas
2020/02/13 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
自荐信的格式
2014/03/10 职场文书
市场营销工作计划书
2014/05/06 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
php实例化对象的实例方法
2021/11/17 PHP
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫