Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)

下面是详细讲解:

Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)

在日常爬虫过程中,有很多情况下需要模拟登录实现数据或者页面的获取,这时就需要使用到selenium了。Selenium是一款自动化测试工具,但是同样能够用来模拟登录,其内部其实是通过去操作浏览器依靠JS控制实现各种自动化的。

需求

通过实例来演示Selenium+Python自动化操控登录界面的过程,模拟登录同花顺的问题。

实现

模拟登录同花顺,需要输入账号密码,同时需要输入验证码。有时候验证码并不是很复杂,我们可以通过验证码的识别和提交来进行模拟登录。

环境准备

首先需要将Python的webdriver安装好。在命令行中输入pip install selenium就可以。

然后需要下载浏览器的驱动,比如Chrome、Firefox等等,选择对应的版本下载保存到本地。这里以Chrome为例下载对应的ChromeDriver驱动。

代码实现

  1. 导入需要的包和模块

from selenium import webdriver
import time
import requests
from PIL import Image
import pytesseract

  1. 开始模拟登录

url = 'https://passport.ithome.com/'
browser = webdriver.Chrome(executable_path='./chromedriver')
browser.implicitly_wait(10)
browser.get(url)

  1. 输入账号密码和验证码

```
username = browser.find_element_by_id('username')
username.send_keys('your_username')

password = browser.find_element_by_id('password')
password.send_keys('your_password')

# 获取验证码图片链接
code_image = browser.find_element_by_id('captcha_img').get_attribute('src')

# 下载验证码图片
image_content = requests.get(code_image).content

# 保存验证码图片
with open('./code.png', 'wb') as f:
f.write(image_content)

# 校验验证码图片
code = pytesseract.image_to_string(Image.open('./code.png'))

# 输入验证码
code_input = browser.find_element_by_id('captcha_code')
code_input.send_keys(code)
```

  1. 点击登录按钮

login_button = browser.find_element_by_id('login_button')
login_button.click()

完整代码

from selenium import webdriver
import time
import requests
from PIL import Image
import pytesseract

url = 'https://passport.ithome.com/'
browser = webdriver.Chrome(executable_path='./chromedriver')
browser.implicitly_wait(10)
browser.get(url)

username = browser.find_element_by_id('username')
username.send_keys('your_username')

password = browser.find_element_by_id('password')
password.send_keys('your_password')

# 获取验证码图片链接
code_image = browser.find_element_by_id('captcha_img').get_attribute('src')

# 下载验证码图片
image_content = requests.get(code_image).content

# 保存验证码图片
with open('./code.png', 'wb') as f:
    f.write(image_content)

# 校验验证码图片
code = pytesseract.image_to_string(Image.open('./code.png'))

# 输入验证码
code_input = browser.find_element_by_id('captcha_code')
code_input.send_keys(code)

# 点击登录按钮
login_button = browser.find_element_by_id('login_button')
login_button.click()

# 等待页面加载完成
time.sleep(10)

# 输出登录后的页面标题
print(browser.title)

# 关闭浏览器
browser.close()

示例说明

第一个示例在登录同花顺时,需要输入账号、密码和验证码。首先使用selenium启动Chrome浏览器,并打开同花顺的登录页面。然后通过find_element_by_id方法,找到对应的元素输入对应的账号、密码以及验证码。

验证码图片的下载和校验,我们需要通过requests模块下载到验证码图片的链接,然后通过PILpytesseract模块完成验证码识别的过程。

最后通过click()方法模拟登录操作,等待页面加载完毕并输出标题后关闭浏览器。

第二个示例的场景是在一个网站中进行深度爬取。因为这个网站需要登录才能进行爬取,所以需要模拟登录。我们首先打开登录页面,找到账号、密码输入框以及登录按钮等元素,输入对应的账号、密码并点击登录,等待页面加载完成后,即可实现登录。然后再进行之后的爬取操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验) - Python技术站

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

相关文章

  • Vue入门之animate过渡动画效果

    Vue入门之animate过渡动画效果 在Vue.js中使用过渡动画效果可以使页面更加生动、美观、易于交互。本文将介绍Vue中的animate过渡动画效果的完整攻略。 安装必备依赖 在使用Vue过渡动画效果前,我们需要先安装相关依赖: npm install animate.css 设置组件的过渡动画 组件的过渡动画可以通过Vue提供的过渡类名来实现。在组件…

    css 2023年6月10日
    00
  • Webstorm开发工具使用教程详解

    WebStorm开发工具使用教程详解 WebStorm是一款由JetBrains公司开发的JavaScript集成开发环境(IDE),集成了丰富的Javascript开发工具,如调试、代码智能提示、版本控制、代码重构等功能。本文将详细讲解WebStorm开发工具的使用方法。 安装WebStorm 下载Webstorm软件包,并按照指引安装到本地计算机上。 创…

    css 2023年6月9日
    00
  • CSS 辐射渐变背景 radial-gradient的实现

    下面我就详细讲解一下如何实现CSS 辐射渐变背景 radial-gradient。 什么是CSS 辐射渐变背景 radial-gradient CSS 辐射渐变背景 radial-gradient 是 CSS3 增加的一种渐变背景技术,它通过放置圆形和椭圆形的颜色之间进行平滑的渐变,可以创建出非常漂亮的渐变效果。它的语法如下: background: rad…

    css 2023年6月9日
    00
  • JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性

    JavaScript 位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性 什么是DOM属性? DOM是JavaScript操作网页的接口,它提供了一系列属性和方法来获取和修改网页元素的内容、样式、位置和大小等信息。在JavaScript中,通过访问DOM属性可以获取网页元素的位置和大小,进而进行布局和交互的操作。 元素的位置属性 元素的位置属性包括o…

    css 2023年6月10日
    00
  • HTML基础必看——全面了解css样式表

    当我们在编写HTML文档时,其中一个关键部分是添加CSS样式表。CSS(Cascading Style Sheets)是一种样式表语言,它描述了HTML文档中每个元素的外观和布局。在这篇文章中,我将介绍CSS样式表的基础知识,包括样式表的语法,如何添加样式表,如何使用CSS选择器,以及如何在HTML文档中应用CSS样式。 语法 CSS的语法是基于选择器和属性…

    css 2023年6月9日
    00
  • Web 设计与开发者必须知道的 15 个站点

    Web 设计与开发者必须知道的 15 个站点 本文将介绍 Web 设计与开发者必须知道的 15 个站点,这些站点可以帮助我们在设计开发过程中提高效率,提供更好的用户体验。以下是这 15 个站点的简要介绍: 1. Can I use Can I use 是一个网站,用于检查 CSS、JavaScript 和 HTML 特性的兼容性。使用该网站,您可以检查特性的…

    css 2023年6月10日
    00
  • 深入理解CSS中的vertical-align属性和基线问题

    深入理解CSS中的vertical-align属性和基线问题 在CSS中,vertical-align属性用于指定元素的垂直对齐方式,但是由于基线问题的存在,vertical-align属性的表现并不总是符合预期。本攻略将详细讲解CSS中的vertical-align属性和基线问题,包括基本概念、属性介绍、注意事项和示例说明。 1. 基本概念 在CSS中,v…

    css 2023年5月18日
    00
  • 运用CSS methodologies去实现模块化的方法示例

    在运用CSS methodologies去实现模块化的方法中,我们需要遵循一定的规范和流程,这样可以让我们的代码更加清晰和易于维护。下面是一个简单的示例来展示如何使用CSS methodologies去实现模块化。 方法一: BEM(Block Element Modifier) BEM是一种CSS框架,通过定义块、元素和修饰符,使得HTML元素易于维护和理…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部