下面是详细讲解:
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 自动化操控登录界面实例(有简单验证码图片校验) - Python技术站