本文目录导读:

使用高德地图API(推荐)
import requests
import json
def get_weather_alert_gaode(adcode='110000'):
"""
获取天气预警信息
adcode: 行政区划代码,如北京=110000
"""
# 需要注册高德地图开发者账号获取key
key = '你的高德API_KEY'
url = f'https://restapi.amap.com/v3/weather/weatherInfo'
params = {
'key': key,
'city': adcode,
'extensions': 'all' # all返回详细天气+预警
}
response = requests.get(url, params=params)
data = response.json()
if data.get('status') == '1':
# 获取预警信息
alerts = data.get('lives', [{}])[0]
print(f"城市: {alerts.get('province')} {alerts.get('city')}")
print(f"天气: {alerts.get('weather')}")
print(f"温度: {alerts.get('temperature')}°C")
# 预警信息在另一个字段
warnings = data.get("forecasts", [{}])[0].get("cast", [])
return data
return None
get_weather_alert_gaode()
使用气象局官方API
import requests
import xml.etree.ElementTree as ET
def get_weather_alert_cma(province='北京', city='北京'):
"""
使用中国气象局预警信息
"""
# 中国天气网预警接口
url = 'http://www.weather.com.cn/weatheralarm/js/北京.json'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
try:
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
# 解析预警信息
for item in data.get('alerts', []):
print(f"预警类型: {item.get('type')}")
print(f"预警等级: {item.get('level')}")
print(f"预警内容: {item.get('title')}")
print(f"发布时间: {item.get('time')}")
print("-" * 40)
except Exception as e:
print(f"请求失败: {e}")
get_weather_alert_cma()
使用第三方API(和风天气)
import requests
def get_weather_alert_heweather(city_id='101010100'):
"""
使用和风天气API
city_id: 城市ID,如北京=101010100
"""
# 注册和风天气获取你的key
api_key = '你的API_KEY'
# 预警API
url = 'https://devapi.qweather.com/v7/warning/now'
params = {
'location': city_id,
'key': api_key,
'lang': 'zh'
}
response = requests.get(url, params=params)
data = response.json()
if data.get('code') == '200':
for warning in data.get('warning', []):
print(f"预警类型: {warning['typeName']}")
print(f"预警等级: {warning['level']}")
print(f"预警文本: {warning['text']}")
print(f"发布时间: {warning['pubTime']}")
print("-" * 40)
else:
print(f"查询失败: {data.get('message')}")
get_weather_alert_heweather()
简易的爬虫方案(中国天气网)
import requests
from bs4 import BeautifulSoup
def get_weather_alert_scrape(city_name='北京'):
"""
从中国天气网爬取预警信息
"""
url = f'http://www.weather.com.cn/weatheralarm/{city_name}/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 查找预警信息对象
alert_items = soup.select('.alarm-list li')
for item in alert_items[:5]: # 只取前5条
title = item.select_one('.alarm-title')
date = item.select_one('.alarm-date')
if title:
print(f"预警: {title.text.strip()}")
print(f"时间: {date.text.strip() if date else '未知'}")
print("-" * 30)
get_weather_alert_scrape()
使用建议
- 推荐使用高德地图API - 免费且稳定
- 和风天气 - 支持更多的数据维度
- 中国天气网 - 官方数据,但需要注意反爬策略
实现完整示例(含配置)
import requests
import json
import time
class WeatherAlertSystem:
def __init__(self, gaode_key=None, heweather_key=None):
self.gaode_key = gaode_key
self.heweather_key = heweather_key
def get_gaode_alert(self, adcode):
"""高德预警"""
url = 'https://restapi.amap.com/v3/weather/weatherInfo'
params = {
'key': self.gaode_key,
'city': adcode,
'extensions': 'all'
}
data = requests.get(url, params=params).json()
return data
def check_alerts(self, province, city):
"""综合检查预警"""
alerts = []
try:
# 简单模拟
print(f"正在获取{province}{city}的天气预警...")
# 这里调用上述任一方法
except Exception as e:
print(f"获取失败: {e}")
return alerts
def monitor(self, province, city, interval=600):
"""定时监控天气预警"""
while True:
self.check_alerts(province, city)
time.sleep(interval) # 默认每10分钟检查一次
# 使用示例
monitor = WeatherAlertSystem()
monitor.check_alerts('北京', '北京')
注意事项
- 需要注册相应API平台的开发者账号
- 注意API调用频率限制
- 生产环境建议添加错误重试机制
- 定期更新API密钥和权限
选择哪种方案取决于你的具体需求和使用场景,最简单的方式是使用高德API,接口稳定且文档完善。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播