目录
1. 介绍
本文接着Python爬虫-爬取天气信息(2),介绍如何爬取某地区的实况天气。
您也可以访问我的主页查看其他文章:
2. 请求信息
(1)找到响应的实况天气信息如下:
(2)对应的标头信息如下:
获取到资源的响应数据和标头信息,就可以开始编写爬虫了。
3. 编写爬虫
(1)编写爬取实况天气的爬虫,sk_weather_spider.py:
'''
爬取实况天气
'''
import requests
import json
import re
# 请求头
UA = {
'Referer': 'http://www.weather.com.cn/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43'
}
class GetSkWeather():
def get_sk_weather(area_id):
# 请求的URL
URL = f'http://d1.weather.com.cn/sk_2d/{area_id}.html'
# 发起请求
req = requests.get(URL, headers=UA)
if req.status_code == 200:
req.encoding = 'utf-8'
# 使用正则表达式匹配实况天气
sk_weather = re.search(r'{.*}', req.text)
if sk_weather:
# 将JSON格式的字符串转换为对应的Python对象
weather_json = json.loads(sk_weather.group())
sk_weather = f'''
今日日期: {weather_json['date']}
更新时间: {weather_json['time']}
当前城市: {weather_json['cityname']}
当前温度: {weather_json['temp']}℃
当前天气: {weather_json['weather']}
风向风速: {weather_json['WD']} {weather_json['WS']}
相对湿度: {weather_json['SD']}
空气指数: {weather_json['aqi']}
'''
else:
return "暂未获取实况天气"
return sk_weather
else:
return "数据请求失败"
(2)编写测试代码,sk_weather_test.py:
from spider.sk_weather_spider import GetSkWeather
if __name__ == '__main__':
# 调用get_sk_weather方法获取地区ID为101010100的今日天气
data = GetSkWeather.get_sk_weather(101010100)
print(data)
4. 测试验证
(1)运行测试代码sk_weather_test.py,查看控制台输出:
可以看到正常输出了实况天气!