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

yizhihongxing

下面是详细讲解:

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日

相关文章

  • 多行图片hover加边框会把下面的图片挤到别处的解决方法

    针对“多行图片hover加边框会把下面的图片挤到别处”的问题,我们可以采取以下两种方法来解决。 方法一:为图片加上占位符 我们可以在HTML中为每个图片设置一个确定的大小,并填充占位符。这样可以确保在图片hover加边框时,不会引起其他图片位置的变化。 假设我们有以下的HTML代码: <div class="image-container&q…

    css 2023年6月10日
    00
  • 实例教程 一款纯css3实现的数字统计游戏

    让我来详细讲解“实例教程 一款纯css3实现的数字统计游戏”的完整攻略。 一、准备工作1. 创建HTML文件,命名为index.html,编写基本的HTML结构;2. 在HTML文件中引入CSS文件,命名为style.css;3. 创建一个父元素div,命名为countdown,并设置其宽度、高度和边框等样式;4. 在父元素div内创建4个子元素div,每个…

    css 2023年6月10日
    00
  • html css js 实现Tab标签页示例代码

    HTML、CSS、JS 实现 Tab 标签页是前端开发中常见的应用场景,可以通过实现 Tab 标签页来实现页面的切换和内容展示。下面我将详细讲解 HTML、CSS、JS 实现 Tab 标签页的攻略: HTML 页面结构 在 HTML 中,每个 Tab 页都可以用一个 div 元素来表示,其中每个 div 元素要包含一个与之相对应的唯一标识符 ID 和相应的内…

    css 2023年6月9日
    00
  • CSS选择器(基本选择器和组合选择器)详解

    CSS选择器是一组用于选择HTML或XML文档中特定元素的字符串。在开发过程中,CSS选择器用于为元素应用样式、执行JavaScript操作、或在DOM中对选定元素进行查询。 CSS选择器可以分为基本选择器和组合选择器。 基本选择器 标签选择器 标签选择器是在CSS规则中使用最广泛的选择器,它根据HTML代码中的标签名称来选择元素。 代码示例: p { co…

    Web开发基础 2023年3月20日
    00
  • BootStrap入门教程(三)之响应式原理

    下面我会详细讲解“BootStrap入门教程(三)之响应式原理”的完整攻略。 1. 引言 在现代 web 开发中,响应式布局已经成为必备技能。因此,学习 Bootstrap 框架的响应式原理,对我们深入了解前端开发是很有帮助的。 2. Bootstrap 响应式原理 Bootstrap 的响应式原理是基于 CSS 媒体查询的。它通过为不同的屏幕宽度设置不同的…

    css 2023年6月10日
    00
  • 详解Vue-cli3.X使用px2rem遇到的问题

    详解Vue-cli3.X使用px2rem遇到的问题 什么是vue-cli3.X Vue CLI 是一个基于Vue.js进行快速开发的完整系统。它包括一个响应式的开发服务器、可定制的webpack配置、常规的Vue项目构建任务和集成了最佳实践的生产环境构建等。 何为px2rem px2rem 是一种将px值转化为rem值的工具。通过将框架内各个元素的单位从px…

    css 2023年6月10日
    00
  • 纯CSS3实现圆角效果(含IE兼容解决方法)

    纯CSS3实现圆角效果(含IE兼容解决方法) 1. 圆角效果的CSS3属性 在CSS3中,有四个新属性可以实现圆角的效果,分别是: border-radius:设置边框的圆角,作用于元素的四个角,可以单独设置每个角的大小。 border-top-left-radius、border-top-right-radius、border-bottom-left-ra…

    css 2023年6月10日
    00
  • vue 实现 ios 原生picker 效果及实现思路解析

    下面我将为你详细讲解“vue 实现 ios 原生picker 效果及实现思路解析”的完整攻略。 标题 如何实现ios原生picker效果 在Vue中,实现ios原生picker效果主要是通过借助第三方插件picker-component来完成。picker-component是一个基于Vue的picker组件,实现了iphone风格的列表场景。在使用时,我们…

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