本文目录导读:

我可以帮你编写一个查询快递信息的脚本,以下是几种常用的方法:
方法1:使用快递100 API(推荐)
import requests
import json
def query_express_100(company_code, tracking_number, api_key):
"""
使用快递100 API查询快递
company_code: 快递公司编码,如 'yuantong' 圆通, 'shunfeng' 顺丰等
tracking_number: 快递单号
api_key: 快递100的API密钥
"""
url = "https://poll.kuaidi100.com/poll/query.do"
# 构建请求参数
params = {
"customer": api_key,
"param": json.dumps({
"com": company_code,
"num": tracking_number
})
}
# 添加签名(需要根据实际情况调整)
# sign = md5(param + key + customer)
try:
response = requests.get(url, params=params)
data = response.json()
if data.get('status') == '200':
tracks = data.get('data', [])
print(f"快递单号: {tracking_number}")
print("物流轨迹:")
for track in tracks:
print(f" {track.get('ftime')}: {track.get('context')}")
else:
print(f"查询失败: {data.get('message', '未知错误')}")
except Exception as e:
print(f"错误: {e}")
# 使用示例
company_code = "yuantong" # 快递公司编码
tracking_number = "YT123456789" # 快递单号
api_key = "你的API密钥"
query_express_100(company_code, tracking_number, api_key)
方法2:使用第三方Python库
# 安装:pip install kuaidi100
from kuaidi100 import Kuaidi100
def query_with_library(api_key, tracking_number):
client = Kuaidi100(api_key=api_key)
try:
result = client.query(tracking_number)
print(f"快递状态: {result.get('state')}")
for item in result.get('data', []):
print(f"时间: {item.get('ftime')}")
print(f"内容: {item.get('context')}")
print("-" * 40)
except Exception as e:
print(f"查询失败: {e}")
方法3:通用HTTP请求模板
import requests
import time
import hashlib
import json
class ExpressTracker:
def __init__(self, api_key, customer):
self.api_key = api_key
self.customer = customer
self.base_url = "https://poll.kuaidi100.com/poll/query.do"
def _generate_sign(self, param):
"""生成签名"""
sign_str = f"{param}{self.api_key}{self.customer}"
return hashlib.md5(sign_str.encode()).hexdigest().upper()
def query(self, company_code, tracking_number):
"""查询物流信息"""
param = json.dumps({
"com": company_code,
"num": tracking_number
})
sign = self._generate_sign(param)
params = {
"customer": self.customer,
"param": param,
"sign": sign
}
try:
response = requests.get(self.base_url, params=params, timeout=10)
data = response.json()
if data.get('status') == '200':
self._print_result(data)
else:
print(f"查询失败: {data.get('message')}")
except requests.exceptions.Timeout:
print("请求超时")
except Exception as e:
print(f"错误: {e}")
def _print_result(self, data):
"""打印查询结果"""
state = {
'0': '在途',
'1': '揽件',
'2': '疑难',
'3': '签收',
'4': '退签',
'5': '派件',
'6': '退回'
}
print(f"快递单号: {data.get('nu')}")
print(f"快递公司: {data.get('com')}")
print(f"快递状态: {state.get(data.get('state'), '未知')}")
print("=" * 50)
for item in data.get('data', []):
print(f"时间: {item.get('ftime')}")
print(f"信息: {item.get('context')}")
print("-" * 50)
# 使用示例
if __name__ == "__main__":
tracker = ExpressTracker(
api_key="你的API密钥",
customer="你的customer编码"
)
# 查询示例
tracker.query("yuantong", "YT123456789")
方法4:简单爬虫方式(不推荐)
import requests
from bs4 import BeautifulSoup
def query_express_by_web(tracking_number):
"""
通过快递100网页版查询
注意:这种方式可能不稳定,不推荐生产使用
"""
url = f"https://www.kuaidi100.com/query"
params = {
'type': 'auto', # 自动识别快递公司
'postid': tracking_number
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
try:
response = requests.get(url, params=params, headers=headers)
data = response.json()
if data.get('status') == '200':
for item in data.get('data', []):
print(f"时间: {item.get('ftime')}")
print(f"内容: {item.get('context')}")
print("-" * 40)
else:
print("查询失败")
except Exception as e:
print(f"错误: {e}")
# 使用
query_express_by_web("YT123456789")
使用建议
- 推荐使用快递100 API:稳定、数据全面
- 需要注册快递100账号:获取API密钥
- 注意API调用限制:免费版有每日调用次数限制
常见快递公司编码
# 常用快递公司编码
COMMON_COMPANY_CODES = {
'顺丰': 'shunfeng',
'圆通': 'yuantong',
'中通': 'zhongtong',
'申通': 'shentong',
'韵达': 'yunda',
'邮政': 'youzhengguonei',
'京东': 'jd',
'百世': 'baishiwuliu'
}
如果你告诉我具体的使用场景和需要查询的快递公司,我可以帮你调整成更合适的脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播