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日

相关文章

  • select下拉菜单option文字粗体的实现方法

    实现 select 下拉菜单 option 文字粗体有多种方法,下面我将介绍两种比较常用的方法。 方法一:使用 CSS font-weight 属性 可以使用 CSS 的 font-weight 属性来设置选中的 option 文字的粗细程度。 <select> <option value="1">普通</o…

    css 2023年6月9日
    00
  • Vue.js结合Ueditor富文本编辑器的实例代码

    下面是“Vue.js结合Ueditor富文本编辑器的实例代码”的完整攻略: 1. 引入Ueditor 在Vue.js项目中使用Ueditor需要先引入Ueditor的相关文件。具体可以在Ueditor的官网下载最新版本,将下载下来的文件解压到项目中的相应位置,然后在HTML文件中引入相应的文件即可。 <!DOCTYPE html> <htm…

    css 2023年6月9日
    00
  • HTML里select的CSS样式的改变

    HTML里select的CSS样式的改变 在HTML中,<select>元素用于创建下拉列表,可以使用CSS样式来改变其外观。本攻略将详细讲解HTML里<select>的CSS样式的改变,包括基本概念、属性介绍、注意事项和示例说明。 1. 基本概念 在HTML中,<select>元素用于创建下拉列表,可以使用CSS样式来改…

    css 2023年5月18日
    00
  • css 层叠与z-index的示例代码

    我们来详细讲解一下 CSS 层叠与 z-index 的示例代码。首先,需要了解一些基本概念: CSS 层叠(Cascade),是指同时存在多个 CSS 规则时,根据一定的优先级来决定应用哪条规则的流程。 z-index 属性用于控制堆叠顺序,数值越大的元素越在上面。 接下来,我们来看两个示例: 示例1 HTML 代码: <div class=&quot…

    css 2023年6月10日
    00
  • CSS3基础(RGBa、text-shadow、box-shadow、border-radius)

    CSS3基础攻略 一、RGBa RGBa是RGBA的一种别名,是CSS3新增的颜色表示方式,在颜色值后面增加透明度。RGBa的颜色值由红、绿、蓝、透明度四个通道组成,取值范围都是从0到255,透明度的取值范围是0到1。RGBa可以用来设置背景色、文字颜色等,也可以通过伪类的:hover等方式来设置元素的鼠标悬浮效果。 示例一: /* 设置背景色 */ bac…

    css 2023年6月9日
    00
  • JQuery移动页面开发之屏幕方向改变与滚屏的实现

    下面是针对“JQuery移动页面开发之屏幕方向改变与滚屏的实现”的完整攻略: 一、屏幕方向改变 1.1 监听屏幕方向改变 针对移动端页面开发,我们需要进行屏幕方向改变的监听,以便在屏幕方向改变的时候,做出相应的操作。我们可以通过window.orientation来监听屏幕方向,具体的实现代码如下: $(window).on("orientatio…

    css 2023年6月10日
    00
  • css3背景图片透明叠加属性cross-fade简介及用法实例

    CSS3背景图片透明叠加属性cross-fade可以实现在两张图片之间进行淡入淡出的渐变过渡,让网页的视觉效果更加丰富。 1. cross-fade属性的基本语法及参数说明 cross-fade属性的基本语法如下: background-image: cross-fade( <percentage>, <image1>, <im…

    css 2023年6月9日
    00
  • JS与CSS3实现图片响应鼠标移动放大效果示例

    JS与CSS3实现图片响应鼠标移动放大效果示例的完整攻略如下: 1.需求分析 在讲解代码实现之前,我们需要对需求进行分析。这个效果的需求描述为:当鼠标移动到图片上时,图片放大。而当鼠标移出图片时,图片复原。因此,我们需要使用JS和CSS3分别实现这个效果。 2.使用CSS3实现响应鼠标移动的放大效果 使用CSS3实现该效果非常简单,只需要使用transfor…

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