> 技术文档 > Python 自动化实战:使用 Selenium + Requests + OpenCV 进行智能化 Web 自动化_python opencv 自动化

Python 自动化实战:使用 Selenium + Requests + OpenCV 进行智能化 Web 自动化_python opencv 自动化


全文目录:

    • 开篇语
    • 前言
    • 一、Selenium:网页自动化操作的利器
      • 1.1 Selenium 简介
      • 1.2 Selenium 安装与使用
      • 1.3 Selenium 与 Requests 的结合
    • 二、Requests:高效的 HTTP 请求处理
      • 2.1 Requests 简介
      • 2.2 Requests 示例
      • 2.3 Selenium + Requests 应用场景
    • 三、OpenCV:智能图像识别与处理
      • 3.1 OpenCV 简介
      • 3.2 OpenCV 安装与基本使用
      • 3.3 图像识别:验证码破解
      • 3.4 OpenCV 与 Selenium 的结合
    • 四、总结
    • 文末

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  随着互联网技术的快速发展,Web 自动化测试和任务自动化成为了现代软件开发与运营的重要组成部分。通过自动化脚本,我们可以轻松地进行网页数据抓取、表单自动填写、界面测试等任务,极大地提高了工作效率。Python 作为一门功能强大的编程语言,拥有丰富的库和框架,使得 Web 自动化变得更加简单和高效。

  今天,我们将深入探讨如何使用 Python 中的 SeleniumRequestsOpenCV 库,来实现一个智能化的 Web 自动化系统。通过这三个库的结合,我们可以不仅能够自动化网页的操作,还能够通过图像识别来提高自动化的智能化水平。比如,如何用 Selenium 模拟用户操作,如何使用 Requests 进行高效的数据抓取,如何利用 OpenCV 进行图像识别来实现验证码破解等任务。

一、Selenium:网页自动化操作的利器

1.1 Selenium 简介

Selenium 是一个强大的 Web 自动化测试工具,能够驱动浏览器进行网页操作。它支持多种浏览器(如 Chrome、Firefox、Edge 等),并且可以模拟各种用户操作,如点击按钮、输入文本、提交表单等。

Selenium 的基本使用方法包括以下几个步骤:

  1. 打开浏览器并访问指定网页。
  2. 定位页面元素并与之进行交互(点击、输入、提交等)。
  3. 获取页面信息或截图等。

1.2 Selenium 安装与使用

首先,你需要安装 Selenium 库以及对应的浏览器驱动。例如,使用 Chrome 浏览器时,需要下载 ChromeDriver。

pip install selenium

接下来是一个基本的 Selenium 使用示例:

from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport time# 启动 Chrome 浏览器driver = webdriver.Chrome(executable_path=\"path/to/chromedriver\")# 访问网页driver.get(\"https://www.google.com\")# 定位输入框并输入内容search_box = driver.find_element(\"name\", \"q\")search_box.send_keys(\"Python automation\")# 模拟回车键进行搜索search_box.send_keys(Keys.RETURN)# 等待页面加载time.sleep(2)# 获取当前页面的标题print(driver.title)# 关闭浏览器driver.quit()

在这个示例中,Selenium 打开了 Chrome 浏览器,访问 Google,执行搜索操作并输出页面标题。你可以在这个基础上添加更多复杂的操作,如表单提交、截图、元素定位等。

1.3 Selenium 与 Requests 的结合

Selenium 可以模拟用户的行为,进行网页交互,而 Requests 则适合用于发送 HTTP 请求、获取页面内容。当我们需要对网页进行操作后,再进行数据抓取时,Selenium 与 Requests 的结合可以发挥各自的优势。

二、Requests:高效的 HTTP 请求处理

2.1 Requests 简介

Requests 是一个简单易用的 HTTP 库,主要用于发送 HTTP 请求,获取网页内容。与 Selenium 的图形化浏览器操作不同,Requests 直接发送 HTTP 请求并返回网页的 HTML 内容,速度更快,适用于不需要模拟浏览器的场景。

2.2 Requests 示例

假设我们需要抓取一个网页的数据,可以使用 Requests 库来发送 GET 请求并获取页面内容:

import requestsurl = \"https://www.python.org\"response = requests.get(url)# 输出网页内容print(response.text)

2.3 Selenium + Requests 应用场景

在一些自动化任务中,我们可能先用 Selenium 执行浏览器操作,然后使用 Requests 获取页面的数据。举个例子,当网页需要登录后才能访问数据时,我们可以先使用 Selenium 完成登录操作,再使用 Requests 获取数据。

# 用 Selenium 登录网页from selenium import webdriverfrom selenium.webdriver.common.keys import Keysdriver = webdriver.Chrome(executable_path=\"path/to/chromedriver\")driver.get(\"https://example.com/login\")username = driver.find_element(\"name\", \"username\")password = driver.find_element(\"name\", \"password\")login_button = driver.find_element(\"name\", \"login\")username.send_keys(\"my_username\")password.send_keys(\"my_password\")login_button.click()# 登录成功后获取 cookiescookies = driver.get_cookies()# 使用 Requests 获取数据import requestssession = requests.Session()for cookie in cookies: session.cookies.set(cookie[\'name\'], cookie[\'value\'])response = session.get(\"https://example.com/protected_data\")print(response.text)driver.quit()

三、OpenCV:智能图像识别与处理

3.1 OpenCV 简介

OpenCV 是一个强大的计算机视觉库,可以用来进行图像处理和图像识别。它支持许多计算机视觉任务,包括人脸识别、物体检测、图像识别等。在 Web 自动化中,OpenCV 可以用于验证码识别、元素截图、图像比对等任务。

3.2 OpenCV 安装与基本使用

首先,你需要安装 OpenCV:

pip install opencv-python

OpenCV 可以通过读取和显示图像来进行一些基本操作,例如:

import cv2# 读取图像img = cv2.imread(\"image.jpg\")# 显示图像cv2.imshow(\"Image\", img)# 等待按键事件并关闭窗口cv2.waitKey(0)cv2.destroyAllWindows()

3.3 图像识别:验证码破解

假设我们需要破解一个简单的验证码,可以使用 OpenCV 来提取图像中的字符,并通过图像处理来识别它们。

import cv2import pytesseract# 读取验证码图片img = cv2.imread(\"captcha.jpg\")# 将图像转为灰度图gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 进行二值化处理_, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)# 使用 pytesseract 进行字符识别import pytesseracttext = pytesseract.image_to_string(binary)print(\"识别的验证码是:\", text)

3.4 OpenCV 与 Selenium 的结合

在一些 Web 自动化任务中,我们可能会遇到需要识别验证码的情况。Selenium 可以用来自动化操作浏览器,而 OpenCV 可以用来处理验证码图像,并识别其中的字符。

from selenium import webdriverimport cv2import pytesseract# 启动浏览器driver = webdriver.Chrome(executable_path=\"path/to/chromedriver\")driver.get(\"https://example.com/captcha_page\")# 截取验证码图像captcha_image = driver.find_element_by_id(\"captcha_image\")captcha_image.screenshot(\"captcha.jpg\")# 使用 OpenCV 进行验证码识别img = cv2.imread(\"captcha.jpg\")gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)_, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)text = pytesseract.image_to_string(binary)# 填写验证码captcha_input = driver.find_element_by_id(\"captcha_input\")captcha_input.send_keys(text)# 提交表单submit_button = driver.find_element_by_id(\"submit_button\")submit_button.click()driver.quit()

在这个例子中,Selenium 被用来截取网页中的验证码图片,而 OpenCV 和 Tesseract 被用来识别验证码中的文字并自动填写到输入框中。

四、总结

通过将 SeleniumRequestsOpenCV 结合使用,我们可以实现更加智能化的 Web 自动化任务。Selenium 用于模拟浏览器操作,Requests 用于高效的数据抓取,而 OpenCV 则帮助我们处理图像,解决如验证码识别等问题。掌握这些技术,将使我们能够完成更为复杂的 Web 自动化任务,极大地提升工作效率。

希望本文能帮助你更好地理解 Web 自动化的技术,并为你提供一个强大的工具链,助你在实际开发中应对各种挑战!

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!