利用 Python 进行自动化涉及使用编程技术自动执行任务,通常不需要人为干预。Python 提供了多种库,使其成为自动化不同类型重复任务的强大工具,包括任务调度、网络爬虫、GUI 自动化等等。
利用 Python 的广泛库,可以创建符合特定需求的自动化解决方案。
Python 自动化库
以下是一些常用的 Python 库,用于实现自动化:
-
unittest
− Python 中的单元测试框架。
-
Selenium
− 用于跨不同浏览器测试 Web 应用程序的 Web 自动化框架。
-
Beautiful Soup
− 用于解析 HTML 和 XML 文档的库,适用于网络爬虫。
-
pandas
− 数据处理库,适用于自动化数据分析任务。
-
requests
− 用于发送 HTTP 请求和处理响应的 HTTP 库。
-
Selenium
− 用于跨不同浏览器测试 Web 应用程序的 Web 自动化框架。
-
PyAutoGUI
− 用于模拟鼠标和键盘动作的 GUI 自动化库。
在本教程中,您将了解到使用 Python 进行自动化的各个方面,从使用 schedule
模块安排任务,到使用 BeautifulSoup
进行网页抓取,再到使用 PyAutoGUI
进行 GUI 自动化。
这里我们提供了实际的例子,请确保在本地系统中使用以下命令安装必要的模块:
pip install schedule
pip install beautifulsoup4
pip install pyautogui
使用 “schedule” 模块进行 Python 自动化
Python 中的 schedule
模块允许在指定的时间间隔或时间安排任务以自动执行。它非常适合用于自动化诸如工作调度、定期任务或基于时间的事件之类的重复任务。
示例
此示例演示了如何使用 Python 的 schedule
模块安排每周会议、设置闹钟等常规任务。
import schedule
import time
def alarm():
print("服务器重启时间到 ")
def job():
print("开始每日任务 ")
def meet():
print('周立会 ')
schedule.every(5).seconds.do(alarm)
schedule.every().day.at("10:30").do(job)
schedule.every().monday.at("12:15").do(meet)
while True:
schedule.run_pending()
time.sleep(0.5)
输出
执行上述代码后,您将看到类似如下输出:
服务器重启时间到
服务器重启时间到
服务器重启时间到
...
Python 网络爬虫
网络爬虫是一个简单的自动化任务示例。它是一个自动从网站中提取信息的过程。该技术包括获取网页并从 HTML 内容中提取所需的数据。
网络爬虫广泛用于数据挖掘、数据分析以及需要从网络收集信息的自动化任务。
示例
此示例演示了如何使用 BeautifulSoup
和 urllib.request
模块抓取包含关键词 "python" 的网址的网页。
from bs4 import BeautifulSoup
from urllib.request import urlopen
import re
html = urlopen("https://www.tutorialspoint.com/python/index.htm")
content = html.read()
soup = BeautifulSoup(content, "html.parser")
for a in soup.findAll('a', href=True):
if re.findall('python', a['href']):
print("Python URL:", a['href'])
输出
执行上述代码后,您将看到类似如下输出:
Python URL: /machine_learning_with_python/index.htm
Python URL: /python_pandas/index.htm
Python URL: /python/index.htm
Python URL: /python/index.htm
Python URL: /python_pandas/index.htm
Python URL: /python_pillow/index.htm
Python URL: /machine_learning_with_python/index.htm
Python URL: /python_technologies_tutorials.htm
Python URL: /python/index.htm
...
使用 “pyautogui” 自动化鼠标移动
pyautogui
模块允许您的 Python 脚本自动执行鼠标移动、键盘输入和窗口交互,适用于测试 GUI 应用程序或自动化桌面上的重复任务。
示例
此示例演示了如何使用 Python 的 pyautogui
模块以方形模式自动移动鼠标。
import pyautogui
for i in range(5):
pyautogui.moveTo(300, 100, duration=0.25)
pyautogui.move(300, 0, duration=0.25)
pyautogui.move(0, 300, duration=0.25)
pyautogui.move(-300, 0, duration=0.25)
pyautogui.move(0, -300, duration=0.25)
输出
执行上述代码后,您将看到鼠标按照方形模式移动。
在 Python 中自动化单元测试
Python 中的 unittest
模块用于自动化测试。自动化单元测试是指为代码的各个单元(如函数或方法)编写测试,并自动运行这些测试以确保其行为符合预期。
Python 中的 unittest
模块是一个内置库,提供了创建和运行自动化测试的框架。
示例
此示例演示了如何使用 Python 的 unittest
模块对字符串方法执行自动化测试。每个测试用例方法都以 test_
前缀开头,这是 unittest
框架识别为要运行的方法。
import unittest
class TestingStringMethods(unittest.TestCase):
def test_string_equality(self):
self.assertEqual('ttp' * 5, 'ttpttpttpttpttp')
def test_string_case(self):
self.assertEqual('Tutorialspoint'.upper(), 'TUTORIALSPOINT')
def test_is_string_upper(self):
self.assertTrue('TUTORIALSPOINT'.isupper())
self.assertFalse('TUTORIALSpoint'.isupper())
def test_string_startswith(self):
self.assertTrue('tutorialspoint'.startswith('putor'))
self.assertFalse('tutorialspoint'.startswith('point'))
unittest.main(verbosity=2)
输出
执行上述代码后,您将看到类似如下输出:
test_is_string_upper (__main__.TestingStringMethods) ... ok
test_string_case (__main__.TestingStringMethods) ... ok
test_string_equality (__main__.TestingStringMethods) ... ok
test_string_startswith (__main__.TestingStringMethods) ... FAIL
======================================================================
FAIL: test_string_startswith (__main__.TestingStringMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
File "main.py", line 23, in test_string_startswith
self.assertTrue('tutorialspoint'.startswith('putor'))
AssertionError: False is not true
----------------------------------------------------------------------
Ran 4 tests in 0.000s
FAILED (failures=1)