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下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
Python中decorator使用实例
Apr 14 Python
python3使用QQ邮箱发送邮件
May 20 Python
学习python的前途 python挣钱
Feb 27 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
对Python 检查文件名是否规范的实例详解
Jun 10 Python
python 日期排序的实例代码
Jul 11 Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 Python
Python面向对象编程基础实例分析
Jan 17 Python
解决Keras使用GPU资源耗尽的问题
Jun 22 Python
Django实现内容缓存实例方法
Jun 30 Python
Python的collections模块真的很好用
Mar 01 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
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
2015/02/05 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
详解Angular2 之 结构型指令
2017/06/21 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
使用Kivy将python程序打包为apk文件
2017/07/29 Python
Python入门必须知道的11个知识点
2018/03/21 Python
python实现随机梯度下降法
2020/03/24 Python
python3实现表白神器
2019/04/09 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
辞职申请书范本
2019/05/20 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题
解决redis批量删除key值的问题
2022/03/23 Redis
vue ref如何获取子组件属性值
2022/03/31 Vue.js
Win11开始菜单添加休眠选项
2022/04/19 数码科技