下面是详细讲解:
下面是详细讲解:
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
在日常爬虫过程中,有很多情况下需要模拟登录实现数据或者页面的获取,这时就需要使用到selenium了。Selenium是一款自动化测试工具,但是同样能够用来模拟登录,其内部其实是通过去操作浏览器依靠JS控制实现各种自动化的。
需求
通过实例来演示Selenium+Python自动化操控登录界面的过程,模拟登录同花顺的问题。
实现
模拟登录同花顺,需要输入账号密码,同时需要输入验证码。有时候验证码并不是很复杂,我们可以通过验证码的识别和提交来进行模拟登录。
环境准备
首先需要将Python的webdriver安装好。在命令行中输入pip install selenium就可以。
然后需要下载浏览器的驱动,比如Chrome、Firefox等等,选择对应的版本下载保存到本地。这里以Chrome为例下载对应的ChromeDriver驱动。
代码实现
- 导入需要的包和模块
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()
完整代码
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模块下载到验证码图片的链接,然后通过PIL和pytesseract模块完成验证码识别的过程。
最后通过click()方法模拟登录操作,等待页面加载完毕并输出标题后关闭浏览器。
第二个示例的场景是在一个网站中进行深度爬取。因为这个网站需要登录才能进行爬取,所以需要模拟登录。我们首先打开登录页面,找到账号、密码输入框以及登录按钮等元素,输入对应的账号、密码并点击登录,等待页面加载完成后,即可实现登录。然后再进行之后的爬取操作。
本文标题为:Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
基础教程推荐
- 一篇文章弄清楚Ajax请求的五个步骤 2023-02-23
- ajax使用formdata上传文件流 2023-02-23
- javascript – 我希望在命令行上获得我的linux设备的准确纬度经度.就像HTML5中的Geolocation一样.我没有访问浏览器 2023-10-25
- Javascript 运动中Offset的bug解决方案 2023-12-15
- 各式各样的导航条效果css3结合jquery代码实现 2023-12-20
- Vue基础面试题 2023-10-08
- shell-script – 用于反转HTML文件中数千个元素的排序顺序的正确工具 2023-10-25
- 学习笔记(二)主要是一些HTML的标签学习 2023-10-26
- HTML 2023-10-26
- mysql / php – 在数据库中存储html模板 2023-10-25
