Python - 自動化教程



使用 Python 進行自動化

使用 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進行網路抓取,以及使用BeautifulSoup進行 GUI 自動化。

這裡我們提供了一些實踐示例,請確保在您本地系統中執行提供的程式碼之前,已安裝必要的模組。您可以在命令提示符中使用以下命令安裝:

pip install schedule
pip install beautifulsoup4
pip install pyautogui

使用“schedule”模組進行 Python 自動化

Python 中的schedule模組允許您計劃任務在指定的時間間隔或時間自動執行。它非常適合自動化重複性任務,例如作業排程、定期任務或基於時間的事件。

示例

此示例演示瞭如何使用 Python 自動化日常任務,例如使用 Python 的schedule模組排程每週會議、設定鬧鐘等。

import schedule
import time

# Function definitions for scheduled tasks
def alarm():
   print("Time to restart the server   ")

def job():
   print("Starting daily tasks   ")

def meet():
   print('Weekly standup meeting   ')

# Schedule tasks
schedule.every(5).seconds.do(alarm)  # Run every 5 seconds
schedule.every().day.at("10:30").do(job)  # Run daily at 10:30 AM
schedule.every().monday.at("12:15").do(meet)  # Run every Monday at 12:15 PM

# Main loop to execute scheduled tasks
while True:
   schedule.run_pending()
   time.sleep(0.5)

輸出

執行上述程式碼後,您將獲得以下輸出:

Time to restart the server   
Time to restart the server   
Time to restart the server 
...

Python 網路抓取

網路抓取是一個簡單的自動化任務示例。它是一個自動從網站提取資訊的流程。此技術涉及獲取網頁並從 HTML 內容中提取所需的資料。

網路抓取廣泛用於資料探勘、資料分析和需要從網路收集資訊的自動化任務。

示例

此示例演示瞭如何使用BeautifulSoupurllib.request模組抓取網頁以獲取包含關鍵字“python”的 URL。

from bs4 import BeautifulSoup
from urllib.request import urlopen
import re

html = urlopen("https://tutorialspoint.tw/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

# Move the mouse in a larger square pattern
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 Automation

自動執行 Python 中的單元測試

Python 中的 unittest 模組用於自動化測試。自動化單元測試是指編寫單個程式碼單元(例如函式或方法)的測試,並自動執行這些測試以確保它們按預期執行。

Python 中的unittest模組是一個內建庫,它提供了一個用於建立和執行自動化測試的框架。

示例

此示例演示瞭如何在 Python 中使用unittest模組對字串方法執行自動化測試。每個測試用例方法都以test_為字首開頭,unittest框架將其識別為要執行的方法。

# importing unittest module
import unittest

class TestingStringMethods(unittest.TestCase):
   # string equal
   def test_string_equality(self):
      # if both arguments are then it's succes
      self.assertEqual('ttp' * 5, 'ttpttpttpttpttp')
   
   # comparing the two strings
   def test_string_case(self):
      # if both arguments are then it's succes
      self.assertEqual('Tutorialspoint'.upper(), 'TUTORIALSPOINT')

   # checking whether a string is upper or not
   def test_is_string_upper(self):
      # used to check whether the statement is True or False
      self.assertTrue('TUTORIALSPOINT'.isupper())
      self.assertFalse('TUTORIALSpoint'.isupper())
      
   def test_string_startswith(self):
       # Used the startswith() to identify the start of the string
       self.assertTrue('tutorialspoint'.startswith('putor'))
       self.assertFalse('tutorialspoint'.startswith('point'))
       
# running the tests
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)
廣告