Python爬虫-爬取天气信息(3)

本文介绍了如何使用Python编写爬虫来抓取特定地区的实况天气数据。首先,通过分析网页响应找到天气信息的来源,然后设置请求头并发起HTTP请求。接着,利用正则表达式匹配所需内容,再将JSON格式的天气数据解析成Python对象。最后,提供了一个测试脚本来验证爬虫功能的正确性。
摘要由CSDN通过智能技术生成

目录

1. 介绍

2. 请求信息

3. 编写爬虫

4. 测试验证


1. 介绍

        本文接着Python爬虫-爬取天气信息(2),介绍如何爬取某地区的实况天气

Python爬虫-爬取天气信息(1)_代码写不完了的博客-CSDN博客

Python爬虫-爬取天气信息(2)_代码写不完了的博客-CSDN博客

        您也可以访问我的主页查看其他文章:

代码写不完了的博客_CSDN博客代码写不完了擅长Python项目,python操作文件,系统环境配置,等方面的知识,代码写不完了关注pandas,python,django,pygame,spark,pip,virtualenv,numpy,flask领域.https://blog.csdn.net/spx_0108 

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,查看控制台输出:

可以看到正常输出了实况天气!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只程序猿子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值