手机
当前位置:查字典教程网 >脚本专栏 >python >python结合selenium获取XX省交通违章数据的实现思路及代码
python结合selenium获取XX省交通违章数据的实现思路及代码
摘要:前言:目前在研究易信公众号,想给公众号增加一个获取个人交通违章的查询菜单,通过点击返回查询数据。以下是实施过程。一、首先,用火狐浏览器打开X...

前言:

目前在研究易信公众号,想给公众号增加一个获取个人交通违章的查询菜单,通过点击返回查询数据。以下是实施过程。

一、首先,用火狐浏览器打开XX省交管网,分析页面信息:

python结合selenium获取XX省交通违章数据的实现思路及代码1

可以看到共有4种查询种类,我只要查询违章数据,所以分析第一个电子警察信息查询就好了,用firebug分别查看车牌号码、车辆识别码、验证码输入框,可以得到id属性,分别为:carNum1、carAuthCode1、captcha1。

到这里,我们可以用selenium根据获取的id,自动填入车牌号码、车辆识别码、验证码,但验证码如何获取呢?。

二、获取验证码

第一次、通过Tesseract识别

经过测试,识别率太低了,不可行。

第二次、通过cookies查找验证码

通过查看服务器返回的cookies,发现里面竟然有验证码。。。

python结合selenium获取XX省交通违章数据的实现思路及代码2

三、编写程序测试

1、流程图和测试结果

python结合selenium获取XX省交通违章数据的实现思路及代码3

python结合selenium获取XX省交通违章数据的实现思路及代码4

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结合selenium获取XX省交通违章数据的实现思路及代码】相关文章:

python不带重复的全排列代码

用python登录Dr.com思路以及代码分享

python中常用的各种数据库操作模块和连接实例

python访问纯真IP数据库的代码

python登录QQ邮箱发信的实现代码

Python文件夹与文件的操作实现代码

python爬取网站数据保存使用的方法

python实现数通设备端口监控示例

python设置windows桌面壁纸的实现代码

Python获取远程文件大小的函数代码分享

精品推荐
分类导航