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基础教程之获取本机ip数据包示例
Feb 10 Python
详细解析Python中__init__()方法的高级应用
May 11 Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 Python
Django 生成登陆验证码代码分享
Dec 12 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
Python 共享变量加锁、释放详解
Aug 28 Python
Python drop方法删除列之inplace参数实例
Jun 27 Python
python中的错误如何查看
Jul 08 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 Python
python函数的两种嵌套方法使用
Apr 02 Python
Python绘制散乱的点构成的图的方法
Apr 21 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 4.2书写安全的脚本
2006/10/09 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
PHP中的替代语法介绍
2015/01/09 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
JavaScript Array扩展实现代码
2009/10/14 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
jquery使用经验小结
2015/05/20 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Python实现的石头剪子布代码分享
2014/08/22 Python
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
帕克纽约:PARKER NY
2018/12/09 全球购物
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
七夕相亲活动策划方案
2014/08/31 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
详解MindSpore自定义模型损失函数
2021/06/30 Python
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB