python 自动化教程
文章目录
- 前言
- 整数变量
- 字符串变量
- 列表变量
- 算术操作
- 比较操作
- 逻辑操作
- if语句
- for循环遍历列表
- while循环
- 定义函数
- 调用函数
- 导入模块
- 使用模块中的函数
- 启动Chrome浏览器
- 打开网页
- 定位元素并输入内容
- 提交表单
- 关闭浏览器
- 发送GET请求获取网页内容
- 使用BeautifulSoup解析HTML
- 提取网页标题
- 读取CSV文件
- 数据预览
- 数据清洗 - 删除包含缺失值的行
- 数据分析 - 统计描述
- 创建新目录
- 复制文件
- 移动文件
- 读取销售数据Excel文件
- 数据清洗 - 假设去除重复行
- 数据分析 - 计算每个产品的总销售额
- 生成新报表
- 邮件配置
- 添加邮件正文
- 添加附件
- 发送邮件
- 等待页面特定元素加载完成
- 配置日志记录
- 下载必要数据
- 模拟鼠标点击
- 模拟键盘输入
前言
在当今快节奏的工作环境中,重复性任务耗时费力,而 Python 自动化技术宛如神奇助手,能极大提升效率。这份教程将带你开启 Python 自动化学习之旅,从基础语法、常用自动化库,到办公、爬虫等实战场景,助力你快速掌握这一高效技能,轻松应对工作挑战。
一、Python 自动化基础
(一)Python 基础语法回顾
变量与数据类型
Python 拥有多种数据类型,如整数(int)、浮点数(float)、字符串(str)、列表(list)、元组(tuple)、字典(dict)等。变量声明无需指定类型,直接赋值即可。例如:
整数变量
age = 25
字符串变量
name = "John"
列表变量
fruits = [“apple”, “banana”, “cherry”]
操作符
包括算术操作符(如+、-、*、/、%)、比较操作符(如==、!=、>、<、>=、<=)、逻辑操作符(and、or、not)等。
算术操作
result = 5 + 3
比较操作
is_greater = 10 > 5
逻辑操作
is_valid = (age > 18) and (name!= “”)
条件语句与循环语句
条件语句(if、elif、else)用于根据条件执行不同代码块;循环语句(for、while)可实现代码重复执行。
if语句
if age >= 18:
print(“成年人”)
else:
print(“未成年人”)
for循环遍历列表
for fruit in fruits:
print(fruit)
while循环
count = 0
while count < 5:
print(count)
count += 1
函数与模块
函数通过def关键字定义,提升代码复用性;模块是包含 Python 代码的文件,使用import导入。
定义函数
def add_numbers(a, b):
return a + b
调用函数
sum_result = add_numbers(3, 4)
导入模块
import math
使用模块中的函数
sqrt_result = math.sqrt(16)
(二)Python 自动化常用库
Selenium - Web 浏览器自动化
Selenium 可模拟用户在浏览器中的操作,如点击、输入、滚动等,常用于 Web 测试和爬虫开发。
安装:通过pip install selenium安装。需下载对应浏览器的 WebDriver,如 ChromeDriver。
基本操作示例:
from selenium import webdriver
from selenium.webdriver.common.by import By
启动Chrome浏览器
driver = webdriver.Chrome()
打开网页
driver.get(“https://www.example.com”)
定位元素并输入内容
element = driver.find_element(By.NAME, “q”)
element.send_keys(“Python自动化”)
提交表单
element.submit()
关闭浏览器
driver.quit()
Requests 与 BeautifulSoup - 网络爬虫
Requests库用于发送 HTTP 请求获取网页内容,BeautifulSoup库用于解析和提取网页数据。
安装:pip install requests beautifulsoup4。
示例代码:
import requests
from bs4 import BeautifulSoup
发送GET请求获取网页内容
response = requests.get(“https://www.example.com”)
使用BeautifulSoup解析HTML
soup = BeautifulSoup(response.text, ‘html.parser’)
提取网页标题
title = soup.find(‘title’).text
print(title)
Pandas - 数据处理与分析
Pandas 在数据处理和分析方面功能强大,可读写文件、清洗数据、分析数据等。
安装:pip install pandas。
示例:
import pandas as pd
读取CSV文件
data = pd.read_csv(‘data.csv’)
数据预览
print(data.head())
数据清洗 - 删除包含缺失值的行
cleaned_data = data.dropna()
数据分析 - 统计描述
summary = cleaned_data.describe()
print(summary)
OS 与 Shutil - 文件和目录操作
os模块用于操作系统交互,shutil模块用于文件和目录操作。
安装:这两个模块是 Python 标准库,无需额外安装。
示例:
import os
import shutil
创建新目录
os.mkdir(‘new_directory’)
复制文件
shutil.copy(‘example.txt’, ‘new_directory/example.txt’)
移动文件
shutil.move(‘new_directory/example.txt’, ‘another_directory/’)
二、Python 自动化实战应用
(一)自动化办公
文件处理
批量重命名文件:假设要将某文件夹下所有图片文件(.jpg格式)重命名,在文件名前加上 “image_” 前缀。
import os
folder_path = ‘your_folder_path’
for filename in os.listdir(folder_path):
if filename.endswith(’.jpg’):
new_name = ‘image_’ + filename
os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_name))
文件分类整理:将不同类型文件分类存放到对应文件夹。
import os
import shutil
folder_path = ‘your_folder_path’
file_types = {
‘images’: [’.jpg’, ‘.png’, ‘.jpeg’],
‘documents’: [‘.doc’, ‘.docx’, ‘.pdf’],
‘videos’: [‘.mp4’, ‘.avi’, ‘.mkv’]
}
for filename in os.listdir(folder_path):
file_extension = os.path.splitext(filename)[1]
for category, extensions in file_types.items():
if file_extension in extensions:
category_folder = os.path.join(folder_path, category)
if not os.path.exists(category_folder):
os.makedirs(category_folder)
shutil.move(os.path.join(folder_path, filename), os.path.join(category_folder, filename))
数据分析与报表生成
以处理销售数据为例,从 Excel 文件读取数据,分析后生成新报表。
import pandas as pd
读取销售数据Excel文件
sales_data = pd.read_excel(‘sales_data.xlsx’)
数据清洗 - 假设去除重复行
unique_sales_data = sales_data.drop_duplicates()
数据分析 - 计算每个产品的总销售额
product_sales = unique_sales_data.groupby(‘Product’)[‘Sales’].sum()
生成新报表
product_sales.to_excel(‘product_sales_report.xlsx’, index=True)
邮件发送
使用smtplib和email库发送自动化邮件,如发送包含销售报表的邮件。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
邮件配置
sender_email = "your_email@example.com"
receiver_email = "recipient_email@example.com"
password = "your_email_password"
message = MIMEMultipart()
message[‘Subject’] = "销售报表"
message[‘From’] = sender_email
message[‘To’] = receiver_email
添加邮件正文
body = "这是本月的销售报表,请查收。"
message.attach(MIMEText(body, ‘plain’))
添加附件
with open(‘product_sales_report.xlsx’, ‘rb’) as file:
part = MIMEApplication(file.read(), Name=‘product_sales_report.xlsx’)
part[‘Content-Disposition’] = f’attachment; filename=“product_sales_report.xlsx”'
message.attach(part)
发送邮件
with smtplib.SMTP(‘smtp.example.com’, 587) as server:
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())
(二)Web 爬虫自动化
简单网页数据抓取
抓取某新闻网站最新新闻标题和链接。
import requests
from bs4 import BeautifulSoup
url = “https://news.example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, ‘html.parser’)
news_items = soup.find_all(‘div’, class_=‘news-item’)
for item in news_items:
title = item.find(‘h2’).text
link = item.find(‘a’)[‘href’]
print(f"标题: {title}, 链接: {link}”)
动态网页数据抓取(处理 JavaScript 渲染)
对于使用 JavaScript 动态加载数据的网页,借助 Selenium 配合webdriverwait等待页面加载完成后再抓取。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get(“https://dynamic_news.example.com”)
等待页面特定元素加载完成
wait = WebDriverWait(driver, 10)
news_items = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, ‘news-item’)))
for item in news_items:
title = item.find_element(By.TAG_NAME, ‘h2’).text
link = item.find_element(By.TAG_NAME, ‘a’).get_attribute(‘href’)
print(f"标题: {title}, 链接: {link}“)
driver.quit()
三、Python 自动化项目优化与拓展
(一)异常处理与日志记录
异常处理
在自动化脚本中,合理处理异常可避免脚本因错误中断。使用try - except语句捕获异常。
import requests
try:
response = requests.get(“https://nonexistent.example.com”)
response.raise_for_status() # 检查请求是否成功,失败则抛出异常
except requests.RequestException as e:
print(f"请求出错: {e}”)
日志记录
通过logging模块记录脚本运行信息,方便排查问题。
import logging
配置日志记录
logging.basicConfig(filename=‘automation.log’, level=logging.INFO,
format=‘%(asctime)s - %(levelname)s - %(message)s’)
try:
# 自动化脚本代码
result = 10 / 0 # 模拟错误
except ZeroDivisionError as e:
logging.error(f"发生错误: {e}", exc_info=True)
else:
logging.info(“脚本执行成功”)
(二)数据驱动测试与持续集成
数据驱动测试
数据驱动测试将测试用例参数化,从外部文件读取数据运行测试。以 Pandas 读取 Excel 数据进行测试为例:
import pandas as pd
import unittest
def add_numbers(a, b):
return a + b
class DataDrivenTest(unittest.TestCase):
def test_addition(self):
data = pd.read_excel(‘test_data.xlsx’)
for index, row in data.iterrows():
num1 = row[‘Number1’]
num2 = row[‘Number2’]
expected_result = row[‘ExpectedResult’]
result = add_numbers(num1, num2)
self.assertEqual(result, expected_result)
if name == ‘main’:
unittest.main()
持续集成(CI)
利用工具(如 Jenkins、Travis CI 等)自动构建、测试和部署 Python 自动化项目。以 Travis CI 为例,在项目根目录创建.travis.yml文件配置构建和测试流程。
language: python
python:
- "3.11"
install: - pip install -r requirements.txt
script: - python -m unittest discover
此配置指定使用 Python 3.11,安装项目依赖(requirements.txt中列出),并运行单元测试。
(三)与其他技术结合拓展自动化能力
与人工智能(AI)结合
如使用 Python 调用自然语言处理(NLP)库(如 NLTK、SpaCy)对文本数据进行自动化处理和分析。
import nltk
from nltk.sentiment import SentimentIntensityAnalyzer
下载必要数据
nltk.download(‘vader_lexicon’)
sia = SentimentIntensityAnalyzer()
text = "这部电影太棒了!"
sentiment = sia.polarity_scores(text)
print(sentiment)
与机器人流程自动化(RPA)结合
通过pyautogui库实现跨系统操作自动化,模拟鼠标和键盘动作。
import pyautogui
模拟鼠标点击
pyautogui.click(100, 100)
模拟键盘输入
pyautogui.typewrite(“Hello, World!”)