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

下面是详细的“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 2023年5月18日
    00
  • pytorch 实现L2和L1正则化regularization的操作

    以下是pytorch实现L2和L1正则化regularization的操作的完整攻略: L2正则化 L2正则化是一种常用的正则化方法,用于防止模型过拟合。在pytorch中,可以使用weight_decay参数来实现L2正则化。以下是一个示例代码: import torch import torch.nn as nn import torch.optim a…

    python 2023年5月14日
    00
  • Python:从零开始开发多元线性回归模型

    【问题标题】:Python: Develope Multiple Linear Regression Model From ScrathPython:从零开始开发多元线性回归模型 【发布时间】:2023-04-03 13:45:01 【问题描述】: 我正在尝试在 python 中从头开始创建一个多元线性回归模型。使用的数据集:Boston Housing D…

    Python开发 2023年4月8日
    00
  • python定时器使用示例分享

    Python定时器是一个非常实用的工具,它可以在规定的时间内执行特定的操作。在这篇文章中,我们将分享两个定时器的使用示例,帮助您了解如何使用Python定时器来自动执行任务。下面是操作步骤: 1. 安装定时器模块 Python自带了定时器模块time,可以使用该模块创建定时器并执行定时任务。 2. 示例1:使用time模块中的sleep函数实现定时器 使用t…

    python 2023年6月2日
    00
  • python实现屏保计时器的示例代码

    下面就是Python实现屏保计时器的攻略: 1. 确定界面风格和UI设计 首先,需要考虑屏保计时器的界面风格和UI设计。一般而言,屏保计时器都是比较简单的界面设计,主要包括一个计时器和一些附加信息(如日期、时间、天气等)。因此,可以根据自己的需要确定相关的UI设计,如字体、颜色、布局等。 2. 使用Python实现计时器功能 Python中有多种方式实现计时…

    python 2023年5月19日
    00
  • Python实现删除windows下的长路径文件

    Python实现删除windows下的长路径文件 背景 在Windows系统中,某些文件的路径可能超过260个字符的限制,这就被称为“长路径”。在文件名和路径中有许多Unicode字符时,这可能会变得很常见。通常,这样的文件是无法删除、复制、移动或操作的。然而,使用Python可以轻松地删除这样的长路径文件。 方案 对于Windows系统中的长路径文件,我们…

    python 2023年6月5日
    00
  • Python2中文处理纪要的实现方法

    下面是“Python2中文处理纪要的实现方法”的完整攻略。 问题描述 Python2 支持 unicode 编码,但在处理中文字符时可能存在一定的问题,比如: 读取文件时出现乱码。 处理中文字符串时,出现编码错误的情况。 输出中文时,控制台显示的是 Unicode 码点而非中文字符。 … 解决方法 1. 引入编码声明 Python2 默认读取的文件编码是…

    python 2023年5月20日
    00
  • Pandas出现KeyError的问题解决及分析

    以下是关于“Pandas出现KeyError的问题解决及分析”的完整攻略: 问题描述 在使用 Pandas 进行数据处理时,有会出现 KeyError 的错误,这个错误通常于 DataFrame 或 Series 中不存在指定的列名或索引名导致的。下面是一个例: import pandas as pd df = pd.DataFrameA’: [1, 2, …

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