用python+selenium获取XX省交通违章数据

前言:

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

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

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

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

二、获取验证码

  第一次、通过Tesseract识别

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

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

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

    

三、编写程序测试

  1、流程图和测试结果

  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()

4、参考信息:

  selenium + python自动化测试环境搭建

  chromedriver_win32.zip

时间: 2024-10-07 22:43:54

用python+selenium获取XX省交通违章数据的相关文章

python+selenium获取禅道所有Bug标题

前言: 对于一组很多的数据,一个页面加载不完,需要分页加载,比如禅道的Bug数,一页默认是20个(自己可以根据需求更改),这时就有了第二页,第三页等等. 这时如果要获取所有的Bug标题来怎么做呢? 点击下一页Bug,你会发现url的变化,就只有最后一个数字改变,如下图: 大体思路: 获取所有url→ddt驱动获取每一页的数据 步骤: 第一步:获取所有url 这里已经显示了总共有几页和当前所在的页面数,我们要获取的就后面的数字 '3'. 先定位到这个元素,在通过正则取出后面的 '3',具体代码如下

Python Selenium 获取不到弹出框的另外一种思路

大家都知道弹出框大致可以分为三种:1.警告消息框(alert).2.确认消息框(confirm).3.提示消息对话(prompt) 而selenium 提供switch_to_alert()方法来定位: switch_to_alert() #定位弹出对话 text()               #获取对话框文本值 accept()                   #相当于点击"确认" dismiss()                  #相当于点击"取消"

用python+selenium获取北上广深成五地PM2.5数据信息并按空气质量排序

从http://www.pm25.com/shenzhen.html抓取北京,深圳,上海,广州,成都的pm2.5指数,并按照空气质量从优到差排序,保存在txt文档里 #coding=utf-8 from selenium import webdriver from time import sleep class PM: def __init__(self): self.dr = webdriver.Chrome() self.pm25_info = self.get_pm25_info() de

Python+Selenium获取百度联系我们页面的email列表

#coding=utf-8 from selenium import webdriver import re driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(6) driver.get("http://home.baidu.com/contact.html") # 得到页面源代码 doc = driver.page_source emails = re.findall(r'[\w][

Python 3 获取 股票、期权等数据

1. 获取 API 1)注册 https://tushare.pro/ 2. Python 安装 tushare 库 "pip install tushare" 3. 通过接口获取数据 https://tushare.pro/document/2?doc_id=25 import tushare as ts pro = ts.pro_api('xxxxxxxx') #tushare token df = pro.daily(ts_code = '000001.SZ', start_da

selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口)

网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截图. 代码如下: 1 # coding=utf-8 2 from selenium import webdriver 3 import time 4 5 driver = webdriver.Chrome() 6 driver.maximize_window() # 窗口最大化 7 8 driver

【Mac + Python + Selenium】之获取验证码图片code并进行登录

初稿代码,可以忽略不计(自己留着看) #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/01/15 13:27 # @Author : zc # @File : 115test.py from selenium import webdriver from selenium.webdriver.common.by import By from time import sleep from PIL import Image,Im

WEB自动化(Python+selenium)的API

在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                                                                                                     WEB自动化测试培训2 课程目的 一.Webdriver API 的使用 课程内容 1    控制浏览器 Selenium 主要提供的是操作页面上各

python+selenium遍历某一个标签中的内容

一.python+selenium遍历某一个标签中的内容 举个例子:我要获取列表标签<li></li>的内容 根据python+selenium定位到列表整体,使用for循环获取列表文本:可用于校验列表是否存在你需要的文本内容 1.获取内容不包含嵌套层列表 给出代码: from selenium import webdriver import time d = webdriver.Chrome() d.maximize_window() # 窗口最大化###登录某网站 d.get(