🤖
Python + Gmail でヤマト運輸の荷物追跡を自動化する
✅ はじめに
- 荷物のステータスが更新されたらすぐ知りたい!
- Web画面を毎回開くのが面倒なので、Pythonで自動化してみた
🔧 必要なもの
- Python 3.x
- ライブラリ:
httpx
,beautifulsoup4
,smtplib
,email
- Gmail アカウントとアプリパスワード(2段階認証を有効にする必要あり)
📦 ステップ1: 追跡情報の取得
import httpx
from bs4 import BeautifulSoup
def get_yamato_status(tracking_code):
url = "https://toi.kuronekoyamato.co.jp/cgi-bin/tneko"
headers = {"User-Agent": "Mozilla/5.0"}
data = {"number01": tracking_code, "number00": 1}
with httpx.Client(headers=headers) as client:
response = client.post(url, data=data)
soup = BeautifulSoup(response.text, "html.parser")
status_div = soup.find("div", class_="data state")
return status_div.text.strip() if status_div else "状態不明"
📧 ステップ2: Gmail で通知を送る
import smtplib
from email.mime.text import MIMEText
def send_gmail(subject, body, to_email, from_email, app_password):
msg = MIMEText(body)
msg["Subject"] = subject
msg["From"] = from_email
msg["To"] = to_email
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
smtp.login(from_email, app_password)
smtp.send_message(msg)
🔁 ステップ3: 状態の変化を定期チェック
import time
from datetime import datetime
TRACKING_CODE = "your_tracking_number"
EMAIL = "your_gmail@gmail.com"
APP_PASSWORD = "your_app_password"
LAST_STATUS = None
while True:
current_status = get_yamato_status(TRACKING_CODE)
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{timestamp}] [現在の状態] {current_status}")
if current_status != LAST_STATUS:
if LAST_STATUS is not None:
send_gmail(
subject="荷物のステータスが更新されました",
body=f"{timestamp} に状態が「{current_status}」に変わりました。",
to_email=EMAIL,
from_email=EMAIL,
app_password=APP_PASSWORD
)
LAST_STATUS = current_status
time.sleep(300) # 5分間隔でチェック
🔒 Gmail アプリパスワードの取得方法(簡潔に)
- Googleアカウント > セキュリティ にアクセス
- 「2段階認証プロセス」を有効化
- 「アプリ パスワード」から新規作成 → メール + Windowsなどを選択
- 表示された16桁のパスワードを保存して使用
✅ おわりに
- 状態が変わるとすぐ通知が来るので便利!
- 改良案:LINE通知や複数荷物への対応 etc.
Discussion