写了两年Python自动化脚本,这5个模板帮我省了至少200小时

王尘宇 实用技巧 5

作为站长/运营/半个程序员,我每周要处理大量重复操作:批量下载图片、定时备份数据库、监控网站状态、整理Excel数据。这两年陆续写了一些Python自动化脚本,选5个最常用的分享——照抄就能用。

1. 批量下载并压缩图片

做内容站最烦的就是找图→下载→压缩→上传。这个脚本一键搞定:从URL列表下载图片,自动转WebP,压缩到指定大小。

import requests
from PIL import Image
from io import BytesIO
import os

urls = ["https://example.com/img1.jpg", "https://example.com/img2.png"]
output_dir = "./images"
os.makedirs(output_dir, exist_ok=True)

for i, url in enumerate(urls):
    resp = requests.get(url, timeout=10)
    img = Image.open(BytesIO(resp.content))
    # 转RGB(PNG可能有透明通道)
    if img.mode in ("RGBA", "P"):
        img = img.convert("RGB")
    # 限制宽度1200px,等比缩放
    if img.width > 1200:
        ratio = 1200 / img.width
        img = img.resize((1200, int(img.height * ratio)))
    img.save(f"{output_dir}/img_{i+1}.webp", "WEBP", quality=80)
    print(f"Done: img_{i+1}.webp ({os.path.getsize(f'{output_dir}/img_{i+1}.webp')//1024}KB)")

核心依赖:Pillow。`pip install Pillow requests` 就行。

2. 网站状态监控+微信通知

服务器挂了你可能几个小时都不知道。这个脚本每5分钟检查一次,挂了通过Server酱推送到微信。

import requests, time

SITES = ["https://wangchenyu.com", "https://your-site.com"]
SERVERCHAN_KEY = "你的Server酱Key"

def notify(msg):
    requests.post(f"https://sctapi.ftqq.com/{SERVERCHAN_KEY}.send", 
                  data={"title": "网站异常", "desp": msg})

while True:
    for site in SITES:
        try:
            r = requests.get(site, timeout=10)
            if r.status_code != 200:
                notify(f"{site} 返回 {r.status_code}")
        except Exception as e:
            notify(f"{site} 无法访问: {str(e)}")
    time.sleep(300)

扔到screen里跑,或者做成systemd服务。2026年Server酱免费版每天5条通知,小站够用。

3. MySQL自动备份+上传到R2

数据库备份不能只放在本地服务器上。这个脚本dump数据库后用rclone传到Cloudflare R2:

import subprocess, os
from datetime import datetime

DB_NAME = "your_db"
DB_USER = "root"
DB_PASS = "password"
BACKUP_DIR = "/backup/mysql"
R2_BUCKET = "r2:bucket-name/db-backups"

os.makedirs(BACKUP_DIR, exist_ok=True)
fname = f"{BACKUP_DIR}/{DB_NAME}_{datetime.now().strftime('%Y%m%d_%H%M')}.sql.gz"

# dump + 压缩
subprocess.run(f"mysqldump -u{DB_USER} -p{DB_PASS} {DB_NAME} | gzip > {fname}", 
               shell=True, check=True)

# 上传到Cloudflare R2
subprocess.run(["rclone", "copy", fname, R2_BUCKET], check=True)

# 保留最近7天本地备份
files = sorted(os.listdir(BACKUP_DIR))
for old in files[:-7]:
    os.remove(f"{BACKUP_DIR}/{old}")

print(f"Backup done: {fname} ({os.path.getsize(fname)//1024//1024}MB)")

放到crontab里每天凌晨3点跑一次:`0 3 * * * python3 /scripts/backup.py`

4. Excel数据批量处理

运营经常丢过来Excel让"整理成这个格式"。pandas一行代码解决的事:

import pandas as pd

df = pd.read_excel("源数据.xlsx")
# 清洗:去掉空行、统一日期格式、筛选
df = df.dropna(subset=["URL", "标题"])
df["发布日期"] = pd.to_datetime(df["发布日期"]).dt.strftime("%Y-%m-%d")
df_filtered = df[df["状态"] == "已发布"]
df_filtered.to_excel("整理后.xlsx", index=False)
print(f"Done: {len(df_filtered)} rows")

5. 批量SEO检查

从sitemap批量检查标题、描述是否缺失:

import requests, xml.etree.ElementTree as ET
from bs4 import BeautifulSoup

# 解析sitemap
resp = requests.get("https://yoursite.com/sitemap.xml")
root = ET.fromstring(resp.content)
ns = {"ns": "http://www.sitemaps.org/schemas/sitemap/0.9"}

for url_elem in root.findall("ns:url", ns)[:50]:  # 前50页
    url = url_elem.find("ns:loc", ns).text
    r = requests.get(url, timeout=10)
    soup = BeautifulSoup(r.text, "html.parser")
    title = soup.title.string if soup.title else "❌缺失"
    desc = soup.find("meta", attrs={"name": "description"})
    desc_content = desc["content"][:60] if desc else "❌缺失"
    print(f"✓ {url}
  标题: {title}
  描述: {desc_content}
")

跑一遍,把缺描述和标题重复的页面揪出来,批量修。

最后

都2026年了,每天花30分钟手动做重复操作就是在浪费生命。Python自动化不是"程序员才做的事"——这些脚本改三个参数就能跑,花一个下午搞定,以后每天省的时间都够喝一杯咖啡。

标签: Python 自动化脚本 实用技巧 SEO工具 网站监控 编程

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~