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日

相关文章

  • css关于position属性的用法详解(绝对定位和相对定位的混淆)

    CSS关于position属性的用法详解(绝对定位和相对定位的混淆) position属性的概述 position属性定义了元素的定位方式,其可选值有四种:static,relative,absolute和fixed。 static表示元素的默认定位方式,即元素在文档流中按照其自身的顺序排列 relative表示按照元素自身的偏移量来确定元素在文档流中的位置…

    css 2023年6月9日
    00
  • Vue+OpenLayer为地图添加风场效果

    为地图添加风场效果是一个比较复杂的任务,需要结合Vue框架和OpenLayers库进行实现。下面我将介绍一个完整的攻略供参考。 1. 安装Vue和OpenLayers 首先,我们需要安装Vue和OpenLayers。在命令行执行以下命令: # 安装Vue npm install vue # 安装OpenLayers npm install ol 2. 创建V…

    css 2023年6月10日
    00
  • IE8开发人员工具的菜单讲解

    让我来为您介绍一下IE8开发人员工具的菜单讲解。 1. 如何打开IE8开发人员工具 在IE8浏览器中,切换到要调试的页面,然后按下键盘上的F12键,即可打开IE8开发人员工具。 2. 菜单栏讲解 IE8开发人员工具菜单栏一般分为以下几个部分: 2.1 文件菜单 文件菜单用于在IE8开发人员工具中打开文件,可以在其中选择打开本地文件,或者在页面中选择到远程文件…

    css 2023年6月10日
    00
  • JavaScript实现元素滚动条到达一定位置循环追加内容

    那么让我们来详细讲解一下如何使用JavaScript实现元素滚动条到达一定位置循环追加内容的方法: 1. 监听滚动事件 首先,需要在JavaScript中监听元素的滚动事件,可以通过addEventListener来实现,代码示例如下: const box = document.getElementById(‘box’); box.addEventListe…

    css 2023年6月10日
    00
  • 最新版本的CSS选择器浏览器支持情况

    最新版本的CSS选择器浏览器支持情况是指在最新版本的CSS规范中定义的各种选择器在各个主流浏览器中的支持情况。下面我们将从不同种类的选择器来介绍它们的浏览器支持情况。 元素选择器 元素选择器是最基本也是最常见的一种CSS选择器,在所有的浏览器中都有非常好的支持,也就是说无论你使用哪种浏览器,都可以放心使用元素选择器来选择相应的HTML元素。下面是一个例子: …

    css 2023年6月9日
    00
  • 基于JavaScript实现新年贺卡特效

    实现新年贺卡特效的基本思路是借助 JavaScript 的 Canvas API 绘制图形和动画效果。 第一步:创建 HTML 页面 首先要新建一个 HTML 页面,并设定好 canvas 元素的宽高和 id,例如: <body> <canvas id="myCanvas" width="400" h…

    css 2023年6月10日
    00
  • 以淘宝前端为例剖析HTML5与移动端页面的性能优化

    以淘宝前端为例剖析HTML5与移动端页面的性能优化 1. HTML5的语义化结构 在HTML5中,我们可以使用语义化标签来描述页面的结构。这些标签不仅可以使代码更加清晰易懂,还能提高搜索引擎的识别能力,从而提高网站的SEO排名。在淘宝前端中,大量使用了语义化标签,例如:header、nav、section、aside等。这些标签不仅有利于搜索引擎优化,还能提…

    css 2023年6月11日
    00
  • 容易忽略的CSS特性

    容易忽略的CSS特性 在CSS中,有一些特性很容易被忽略,但它们对于网页的设计和开发非常重要。本攻略将详细讲解这些容易忽略的CSS特性,包括基本原理、使用方法和示例说明。 1. text-transform text-transform属性用于控制文本的大小写。它可以接受以下值: none:默认值,不改变文本大小写。 capitalize:将每个单词的首字母…

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