selenium+超级鹰实现模拟登录12306

yizhihongxing

下面是详细的“selenium+超级鹰实现模拟登录12306”的攻略。

简介

在这个攻略中,我们将讲解如何使用selenium和超级鹰实现模拟登录12306。详情如下:

  • 首先,我们将介绍selenium和超级鹰的简介和安装方法。
  • 其次,我们将介绍如何使用selenium进行浏览器模拟操作。
  • 然后,我们将介绍如何结合超级鹰破解验证码。
  • 最后,我们将给出完整的代码和示例。

Selenium 和超级鹰的简介和安装方法

Selenium

Selenium是一个自动化测试工具,它可以模拟真实的浏览器行为,并且可以执行与浏览器交互的测试和其他任务。Selenium支持多种语言,如Java、Python等。在这个攻略中,我们使用Python的Selenium 库。

安装Selenium库:

pip install selenium

超级鹰

超级鹰是一个免费的验证码破解服务平台。它可以帮助我们快速地破解各种类型的验证码,包括字母数字验证码、滑动验证码和混合验证码等。

安装超级鹰库:

pip install chaojiying

注:使用超级鹰需要在官网上注册并申请Key和用户名。

使用Selenium进行浏览器模拟操作

在进行模拟登录12306前,我们需要先了解如何使用Selenium进行浏览器模拟操作。在这里,我们以Chrome浏览器为例进行说明。Selenium 为我们提供了操作 Chrome 的工具。

首先,打开Chrome浏览器,并输入如下命令控制chrome浏览器打开网站:

from selenium import webdriver

driver = webdriver.Chrome()  #打开chrome浏览器
driver.get('https://www.baidu.com')   #访问百度首页

运行这段代码,我们可以看到Chrome浏览器自动打开,并且访问了百度首页。

如果我们想查找页面上的某些元素,例如在百度首页上查找输入框并进行搜索操作,则代码如下:

from selenium.webdriver.common.by import By

driver.find_element(By.ID, 'kw').send_keys('12306')   #输入搜索关键字
driver.find_element(By.ID, 'su').click()    #点击搜索按钮

上面的代码中,我们使用了By模块查找页面元素,其中By.ID表示通过元素id进行查找,kwsu分别是百度搜索框和搜索按钮的id。

在模拟登录12306时,我们需要通过如上方法找到登录页面的输入框并输入用户名和密码,然后点击登录按钮。

结合超级鹰破解验证码

在模拟登录12306时,我们需要输入验证码。在这里,我们使用超级鹰服务来破解验证码。

超级鹰的使用具体如下:

import chaojiying

chaojiying = chaojiying.Chaojiying_Client('username', 'password', 'software_ID')   #初始化超级鹰账号信息

im = open('captcha.gif', 'rb').read()   #读取验证码图片

result = chaojiying.PostPic(im, 1902)   #提交验证码到超级鹰服务器进行识别

print(result['pic_str'])   #获取识别结果

上面的代码中,我们通过Chaojiying_Client函数初始化超级鹰的账号信息,其中usernamepassword是超级鹰账号的用户名和密码,software_ID是软件ID。我们读取图片并使用PostPic函数将图片发送到超级鹰服务器进行识别,最终获取识别结果。

实际上,在12306模拟登录时,12306的验证码是通过浏览器生成的,我们可以通过selenium获取页面验证码的图片,并通过上述代码将图片识别结果返回。

完整代码和示例

下面是完整的代码和示例,其中代码包含了Selenium的模拟登录和超级鹰的验证码破解过程。

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
import chaojiying

# 初始化超级鹰账号信息
CJ_USERNAME = 'your_account'
CJ_PASSWORD = 'your_password'
CJ_SOFT_ID = 'your_soft_id'
chaojiying = chaojiying.Chaojiying_Client(CJ_USERNAME, CJ_PASSWORD, CJ_SOFT_ID)

# 打开Chrome浏览器
browser = webdriver.Chrome()

# 进入12306登录页面
browser.get("https://kyfw.12306.cn/otn/login/init")

# 等待页面元素加载完成
time.sleep(2)

# 输入用户名和密码
browser.find_element(By.ID, 'username').send_keys('your_username')
browser.find_element(By.ID, 'password').send_keys('your_password')

# 获取验证码图片,并保存为本地文件
captchaImage = browser.find_element(By.ID, 'J-loginImg')
captchaImage.screenshot('captcha.png')

# 通过超级鹰识别验证码,并输入验证码
im = open('captcha.png', 'rb').read()
result = chaojiying.PostPic(im, 1902)
print(result['pic_str'])
captchaInput = browser.find_element(By.ID, "J-loginImgPsg")
captchaInput.send_keys(result['pic_str'])

# 点击登录按钮
browser.find_element(By.ID, 'loginSub').click()

# 等待页面跳转
time.sleep(5)

# 获取登录状态
status = browser.execute_script('return JSON.parse(document.getElementById("result_message").innerText)["status"]')

# 获取登录状态信息
msg = browser.execute_script('return JSON.parse(document.getElementById("result_message").innerText)["msg"]')

# 输出登录结果
print(msg)
print(status)

# 关闭浏览器
browser.quit()

在代码中,我们首先打开 Chrome 浏览器,然后进入 12306 登录页面。接着,我们使用 find_element(By.ID, 'username')find_element(By.ID, 'password') 等函数找到了登录时的用户名、密码和验证码输入框,并执行了相关操作,其中验证码图片是通过screenshot()截图保存的本地文件。

获取验证码图片之后,我们使用超级鹰服务对验证码进行识别,并将识别结果输入到页面上,然后执行click()函数模拟触发登录按钮并等待页面跳转。

最后,我们通过 JavaScript 代码获取登录状态,判断是否成功。如果登录成功,则获取登录信息并打印,最后关闭浏览器窗口。

综上所述,我们通过以上方法可以轻松使用Selenium超级鹰实现模拟登录12306的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:selenium+超级鹰实现模拟登录12306 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python 元组的使用方法

    Python元组的使用方法 Python中的元组是一组有序且不可变的数据集合,和列表相似,但是元组中的元素无法被修改。在Python中,元组用圆括号 () 来表示。 创建元组 创建一个元组,可以使用逗号分隔并将其放在圆括号里: # 创建元组 my_tuple = (1, 2, 3) print(my_tuple) # (1, 2, 3) 访问元组 您可以通过…

    python 2023年5月14日
    00
  • Python 多线程共享变量的实现示例

    下面是对“Python 多线程共享变量的实现示例”的详细讲解: 一、共享变量的问题 在多线程编程中,一个线程对某个变量进行修改,可能会影响其他线程对该变量的访问。这就是共享变量的问题。为了避免这个问题,Python提供了一些同步机制来保证多线程的安全。下面是两种解决共享变量问题的示例。 二、使用 Lock 来保证共享变量的安全 一个简单的实现方式是使用 Lo…

    python 2023年5月18日
    00
  • Python多线程结合队列下载百度音乐的方法

    Python多线程结合队列下载百度音乐的方法攻略如下: 步骤1:导入必要的库 在Python中,我们需要导入必要的库,包括requests库、os库、queue库和threading库。requests库用于发送HTTP请求,os库用于创建目录,queue库用于创建队列,threading库用于创建线程。使用以下命令导入这些库: import request…

    python 2023年5月15日
    00
  • python常用模块详解

    Python常用模块详解 Python是一门非常流行的编程语言,具有简洁、易读、易学、可扩展等优点。Python的生态圈非常丰富,有很多常用的模块,可以帮助我们更方便地开发。 一、os os模块是一个Python内置的模块,它用于提供与操作系统交互的各种功能。下面是几个常用的方法: 1.1 os.getcwd() os.getcwd()方法用于获取当前工作目…

    python 2023年5月14日
    00
  • Python获取网页数据详解流程

    当然,我很乐意为您提供“Python获取网页数据详解流程”的完整攻略。以下是详细的步骤和示例: Python网页数据的流程 Python获取网数据的流程通常包括以下几个步: 导入所需的库 发送请求 获取响应内容 4.析响应内容 提取所需数据 1. 导入所需的库 在Python中,我们通常使用requests库发送HTTP请求,使用BeautifulSoup库…

    python 2023年5月13日
    00
  • 30道python自动化测试面试题与答案汇总

    《30道python自动化测试面试题与答案汇总》是一篇关于Python自动化测试的面试题及答案总结文章。文章紧紧围绕着如何快速提升Python自动化测试能力和应对面试的目的,总结了30道常见的自动化测试面试题以及详细的解答,详解了每道题目的思路和解决方案,并给出了完整的Python代码实现。 下面给出两道题目的解答示例,以此来说明文章的内容。 题目:请编写P…

    python 2023年5月13日
    00
  • 使用python实现哈希表、字典、集合操作

    使用Python实现哈希表、字典和集合操作是Python编程中比较常见的操作。下面是使用Python实现这些数据结构的完整攻略: 哈希表 哈希表的实现可以使用Python内置的字典类dict来实现。通过dict类实现一个简单的哈希表,可以按照以下步骤进行: 创建一个空的dict对象 使用hash()函数将key值转换成整数,作为哈希表的索引 将key和val…

    python 2023年5月13日
    00
  • 17条提高工作效率的Python技巧分享

    这里是 “17条提高工作效率的Python技巧分享”的完整攻略。 1. 使用Jupyter Notebook Jupyter Notebook是一个强大的交互式笔记本,非常适合Python编程。通过在笔记本上编写和测试代码,可以更快地开发和调试Python程序,使工作效率更高。 2. 使用虚拟环境 使用虚拟环境可以避免不同Python包的版本冲突,提高代码的…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部