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 自动化操控登录界面实例(有简单验证码图片校验)

基础教程推荐