Python 课程12-Python 自动化应用

前言

Python 自动化应用 可以帮助开发者节省时间和精力,将重复性、手动操作变为自动化脚本。例如,Python 可以用于自动化处理文件、邮件、生成报表,甚至可以控制浏览器执行复杂的网页操作任务。借助 Python 的强大库和工具,可以轻松地实现这些自动化任务。

在本教程中,我们将介绍如何使用 Python 自动化处理日常任务,包括文件操作、发送邮件和生成报表等。我们还将展示如何使用 Selenium 进行网页操作自动化,帮助你实现浏览器自动化任务,如自动登录、表单提交等。


目录

  1. Python 自动化文件与报表处理

    • 自动化处理文件(文件读写、复制、删除)
    • 使用 Python 生成 Excel 报表
    • 自动化生成 PDF 报告
    • 使用 smtplib 自动化发送邮件
  2. 使用 Selenium 进行网页操作自动化

    • 什么是 Selenium?
    • 安装与设置 Selenium
    • 自动化浏览器操作(打开网页、点击、表单填写)
    • 自动化抓取网页内容
    • 示例:使用 Selenium 自动登录网站

1. Python 自动化文件与报表处理

自动化处理文件(文件读写、复制、删除)

Python 的 osshutil 模块允许我们自动化处理文件和文件夹,例如创建、读取、复制、移动和删除文件。

文件读写:

复制代码
# 打开并读取文件
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

# 写入文件
with open('output.txt', 'w') as file:
    file.write("This is an automated message.")

复制、移动和删除文件:

复制代码
import shutil
import os

# 复制文件
shutil.copy('example.txt', 'backup_example.txt')

# 移动文件
shutil.move('backup_example.txt', 'folder/backup_example.txt')

# 删除文件
os.remove('folder/backup_example.txt')

使用 Python 生成 Excel 报表

openpyxl 是一个常用的 Python 库,用于操作 Excel 文件,适合用于生成自动化的 Excel 报表。

安装 openpyxl:

复制代码
pip install openpyxl

生成 Excel 文件:

复制代码
from openpyxl import Workbook

# 创建一个新的 Excel 文件
wb = Workbook()
ws = wb.active

# 添加标题行
ws.append(['Name', 'Age', 'Salary'])

# 添加数据行
data = [
    ['Alice', 30, 50000],
    ['Bob', 24, 40000],
    ['Charlie', 29, 45000]
]

for row in data:
    ws.append(row)

# 保存 Excel 文件
wb.save('report.xlsx')

自动化生成 PDF 报告

可以使用 reportlab 库自动生成 PDF 文件。

安装 reportlab:

复制代码
pip install reportlab

生成 PDF 文件:

复制代码
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

# 创建 PDF 文件
c = canvas.Canvas("report.pdf", pagesize=letter)
c.drawString(100, 750, "Automated PDF Report")
c.drawString(100, 720, "Name: Alice")
c.drawString(100, 700, "Salary: $50,000")
c.save()

使用 smtplib 自动化发送邮件

smtplib 库允许我们通过 SMTP 协议发送电子邮件。

自动发送电子邮件:

复制代码
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email():
    sender_email = "your_email@gmail.com"
    receiver_email = "receiver_email@gmail.com"
    password = "your_password"

    message = MIMEMultipart("alternative")
    message["Subject"] = "Automated Email"
    message["From"] = sender_email
    message["To"] = receiver_email

    # 邮件内容
    text = "This is an automated email."
    part1 = MIMEText(text, "plain")
    message.attach(part1)

    # 连接到 Gmail SMTP 服务器
    server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message.as_string())
    server.quit()

send_email()

你需要在上面的代码中替换 your_email@gmail.comyour_password,并确保你的邮箱设置允许通过 SMTP 发送邮件。


2. 使用 Selenium 进行网页操作自动化

什么是 Selenium?

Selenium 是一个强大的自动化工具,可以用于控制浏览器执行各种操作,如打开网页、填写表单、点击按钮、抓取网页内容等。它适用于网页测试,也可以用于自动化网页操作任务。

安装与设置 Selenium

安装 Selenium:

复制代码
pip install selenium

下载浏览器驱动(例如 ChromeDriver):

  • 访问 ChromeDriver 下载页面,下载与你的 Chrome 版本匹配的驱动程序。
  • 解压并将 chromedriver 文件路径添加到系统环境变量中。

自动化浏览器操作(打开网页、点击、表单填写)

使用 Selenium 打开网页并进行简单的操作:

复制代码
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.XPATH, '//*[@id="submit-button"]')
element.click()

# 填写表单
input_box = driver.find_element(By.NAME, 'username')
input_box.send_keys("your_username")

# 关闭浏览器
driver.quit()

自动化抓取网页内容

Selenium 也可以用于自动化抓取网页数据,例如获取网页上的文本或链接。

复制代码
# 打开网页
driver.get("https://www.example.com")

# 抓取网页标题
title = driver.title
print(f"Page title is: {title}")

# 抓取特定元素的文本
element = driver.find_element(By.CSS_SELECTOR, 'h1')
print(f"Page heading: {element.text}")

示例:使用 Selenium 自动登录网站

以下是一个通过 Selenium 自动登录网站的示例(以 GitHub 为例):

复制代码
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

# 启动 Chrome 浏览器
driver = webdriver.Chrome()

# 打开 GitHub 登录页面
driver.get("https://github.com/login")

# 输入用户名
username = driver.find_element(By.ID, "login_field")
username.send_keys("your_username")

# 输入密码
password = driver.find_element(By.ID, "password")
password.send_keys("your_password")

# 提交登录表单
password.send_keys(Keys.RETURN)

# 等待页面加载并获取当前页面 URL
driver.implicitly_wait(10)  # 设置隐式等待
print(f"Current URL: {driver.current_url}")

# 关闭浏览器
driver.quit()

此示例中,Selenium 控制 Chrome 浏览器打开 GitHub 登录页面,自动输入用户名和密码并提交表单,完成自动登录。


结论

通过本教程,我们展示了如何使用 Python 自动化处理文件、生成 Excel 和 PDF 报告,以及通过 smtplib 发送自动化邮件。我们还深入探讨了 Selenium 在网页操作自动化中的应用,展示了如何自动登录网站、抓取网页内容以及进行浏览器交互。

相关推荐
_AaronWong1 小时前
Electron 实现仿豆包划词取词功能:从 AI 生成到落地踩坑记
前端·javascript·vue.js
cxxcode1 小时前
I/O 多路复用:从浏览器到 Linux 内核
前端
用户5433081441941 小时前
AI 时代,前端逆向的门槛已经低到离谱 — 以 Upwork 为例
前端
JarvanMo1 小时前
Flutter 版本的 material_ui 已经上架 pub.dev 啦!快来抢先体验吧。
前端
恋猫de小郭2 小时前
AI 可以让 WIFI 实现监控室内人体位置和姿态,无需摄像头?
前端·人工智能·ai编程
哀木2 小时前
给自己整一个 claude code,解锁编程新姿势
前端
程序员鱼皮2 小时前
GitHub 关注突破 2w,我总结了 10 个涨星涨粉技巧!
前端·后端·github
UrbanJazzerati2 小时前
Vue3 父子组件通信完全指南
前端·面试
是一碗螺丝粉2 小时前
5分钟上手LangChain.js:用DeepSeek给你的App加上AI能力
前端·人工智能·langchain
wuhen_n2 小时前
双端 Diff 算法详解
前端·javascript·vue.js