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中条件选择和循环语句使用方法介绍
Mar 13 Python
Python中join和split用法实例
Apr 14 Python
python定时检查某个进程是否已经关闭的方法
May 20 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
发布你的Python模块详解
Sep 15 Python
Python 正则表达式的高级用法
Dec 04 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
python json 递归打印所有json子节点信息的例子
Feb 27 Python
对python中list的五种查找方法说明
Jul 13 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
深度学习tensorflow基础mnist
Apr 14 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操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
php学习 字符串课件
2008/06/15 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
Python logging模块学习笔记
2014/05/24 Python
python实现删除文件与目录的方法
2014/11/10 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
简单了解Python生成器是什么
2019/07/02 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
django使用graphql的实例
2020/09/02 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
次世代生活态度:Hypebeast
2018/07/05 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
产品质量承诺书范文
2014/03/27 职场文书
实验室标语
2014/06/21 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
违纪检讨书
2015/01/27 职场文书
讲文明倡议书
2015/04/29 职场文书
董事长新年致辞
2015/07/29 职场文书
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript