爬取南京100个站点的天气信息,要求包括紫外线强度、温度、降水量、天气状况(多云、晴等)、站点的地理经纬度信息、站点的id,最后返回数据为json格式,给出具体代码
时间: 2023-09-21 19:13:51 浏览: 179
好的,下面是具体的代码实现。
```python
import requests
import json
def get_weather():
# 获取南京100个站点的经纬度
url = "http://api.map.baidu.com/place/v2/search?query=火车站®ion=南京&output=json&ak=你的百度地图API密钥"
response = requests.get(url)
results = json.loads(response.text)["results"]
locations = [(result["location"]["lat"], result["location"]["lng"]) for result in results]
# 根据经纬度请求天气数据
weather_data = []
for i, location in enumerate(locations):
lat, lng = location
url = f"https://api.openweathermap.org/data/2.5/onecall?lat={lat}&lon={lng}&exclude=hourly,daily&appid=你的OpenWeatherMap API密钥"
response = requests.get(url)
data = json.loads(response.text)
# 解析天气数据
weather = {
"id": i + 1,
"lat": lat,
"lng": lng,
"weather": data["current"]["weather"][0]["description"],
"temp": round(data["current"]["temp"] - 273.15, 1),
"rain": data["current"].get("rain", {}).get("1h", 0),
"uv": data["current"].get("uvi", 0)
}
weather_data.append(weather)
# 将所有数据整合成JSON格式返回
return json.dumps(weather_data)
```
需要替换代码中的百度地图API密钥和OpenWeatherMap API密钥。代码中使用了百度地图API来获取南京100个站点的经纬度,使用了OpenWeatherMap API来获取天气数据。最后将获取到的数据整合成JSON格式返回。
阅读全文