You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

110 lines
3.6 KiB

#!/usr/bin/env python3
"""
使用Playwright查询快递信息
"""
import sys
import os
from datetime import datetime
# 添加虚拟环境路径
venv_path = '/root/.openclaw/venv/lib/python3.12/site-packages'
if venv_path not in sys.path:
sys.path.insert(0, venv_path)
try:
from playwright.sync_api import sync_playwright
PLAYWRIGHT_AVAILABLE = True
except ImportError:
PLAYWRIGHT_AVAILABLE = False
print("⚠️ Playwright未安装或未找到")
def query_express_with_playwright(tracking_number):
"""
使用Playwright查询快递信息
"""
if not PLAYWRIGHT_AVAILABLE:
return "❌ Playwright不可用"
print(f"🔍 使用Playwright查询快递: {tracking_number}")
print("=" * 60)
try:
with sync_playwright() as p:
# 启动浏览器
print("🚀 启动浏览器...")
browser = p.chromium.launch(
headless=True,
args=['--no-sandbox', '--disable-setuid-sandbox']
)
# 创建页面
page = browser.new_page(
user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
)
# 方法1: 尝试访问京东物流查询页面
print("🌐 访问京东物流查询页面...")
try:
page.goto('https://www.jd.com', timeout=30000)
print(f" ✅ 页面加载成功,标题: {page.title()}")
# 保存截图用于调试
page.screenshot(path='/tmp/jd_homepage.png')
print(f" 📸 截图已保存: /tmp/jd_homepage.png")
except Exception as e:
print(f" ❌ 访问失败: {e}")
# 方法2: 尝试快递100
print("\n🌐 尝试快递100...")
try:
page.goto(f'https://www.kuaidi100.com/?nu={tracking_number}', timeout=30000)
print(f" ✅ 页面加载成功,标题: {page.title()}")
# 保存截图
page.screenshot(path='/tmp/kuaidi100_page.png')
print(f" 📸 截图已保存: /tmp/kuaidi100_page.png")
# 尝试提取页面内容
content = page.content()
if "暂无" in content or "无信息" in content:
print(" ⚠️ 暂无物流信息")
elif "签收" in content:
print(" ✅ 已签收!")
elif "运输" in content:
print(" 🚚 运输中...")
except Exception as e:
print(f" ❌ 访问失败: {e}")
# 关闭浏览器
browser.close()
print("\n✅ 浏览器已关闭")
except Exception as e:
return f"❌ Playwright查询失败: {e}"
return "\n💡 查询完成!虽然无法直接获取物流数据,但浏览器功能正常工作!"
def main():
tracking_number = sys.argv[1] if len(sys.argv) > 1 else "JDX049504693863"
print("\n" + "=" * 60)
print("📦 Playwright快递查询工具")
print("=" * 60)
print(f"查询时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print()
result = query_express_with_playwright(tracking_number)
print(result)
print("\n" + "=" * 60)
print("💡 推荐查询方式:")
print(" 1. 京东APP - 最准确")
print(" 2. 京东官网 - https://www.jd.com")
print(" 3. 快递100 - https://www.kuaidi100.com")
print("=" * 60)
if __name__ == "__main__":
main()