作为站长/运营/半个程序员,我每周要处理大量重复操作:批量下载图片、定时备份数据库、监控网站状态、整理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自动化不是"程序员才做的事"——这些脚本改三个参数就能跑,花一个下午搞定,以后每天省的时间都够喝一杯咖啡。
还木有评论哦,快来抢沙发吧~