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

目录

1. 简介

2. 信息收集

3. 编写爬虫

4. 测试验证


1. 简介

        接下来我将通过三篇文章介绍如何通过天气网 (weather.com.cn)爬取天气信息。本文将介绍爬取地区名称与地区ID的对应关系,为爬取天气信息打下基础

        您可以访问我的主页查看另外两篇文章。代码写不完了的博客代码写不完了擅长Python项目,python操作文件,系统环境配置,等方面的知识,代码写不完了关注pandas,python,django,pygame,spark,pip,virtualenv,numpy,flask领域.https://blog.csdn.net/spx_0108

2. 信息收集

(1)点击进入天气网的首页:

天气网

 (2)随机搜索一个地区,进入到以下界面,注意URL:

        再换一个地区,再次查看URL :

        两个地区天气的URL如下:

南京天气:http://www.weather.com.cn/weather1d/101190101.shtml

北京天气:http://www.weather.com.cn/weather1d/101010100.shtml

        看的出来,每个地区对应着一个9位数的ID,只需要替换URL中的ID即可查看到对应地区的天气。打开开发者工具(这里我使用的是微软浏览器),刷新界面,查看资源加载情况:

(3)看到这个city.js的资源名,点进去看一下:

(4) 就是它了!响应的数据是地区名称和地区ID对应关系:

         查看一下这个资源的标头信息:

3. 编写爬虫

(1)我们已经得到了地区名称与地区ID的请求URL,请求方法,请求头等信息,编写area_id_spider.py

'''
爬取地区名称与对应的id
'''

import json

import requests
import re

URL = 'https://j.i8tq.com/weather2020/search/city.js'

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 GetAreaID():

    def get_area_id(self):

        areas = requests.get(url=URL, headers=UA)

        if areas.status_code == 200:
            areas.encoding = 'utf-8'
            # print(areas.text)
            # 使用正则表达式,匹配地区名称和地区ID
            matches = re.findall(r'"AREAID":\s*"(\d+)"\s*,\s*"NAMECN":\s*"([\u4e00-\u9fa5]+)"', areas.text)

            # 将匹配结果转换为字典
            result = {match[1]: match[0] for match in matches}

            # 保存匹配结果到json文件
            with open('../data/area_id.json', 'w', encoding='utf-8') as f:
                json.dump(result, f, indent=4, ensure_ascii=False)

            return "请到 data/area_id.json 文件里查看地区id"

        else:
            return "地区id信息爬取失败..."


if __name__ == '__main__':
    msg = GetAreaID().get_area_id()
    print(msg)

        上述代码中保存到json文件的步骤,你需要修改为你保存的路径, 以下是我的项目的结构:

4. 测试验证

(1)运行上面的爬虫程序,控制台输出:

(2)查看area_id.json文件:

        至此,已完成收集该网站中地区与ID的对应关系!

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python爬虫可以很方便地爬取天气数据。以下是一个简单的示例,可以获取北京市最近7天的天气数据: ```python import requests from bs4 import BeautifulSoup url = 'http://www.weather.com.cn/weather/101010100.shtml' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.content, 'html.parser') weather_list = soup.select('.t .clearfix') for weather in weather_list: date = weather.select('.day')[0].text.strip() condition = weather.select('.wea')[0].text.strip() high_temp = weather.select('.tem .high')[0].text.strip() low_temp = weather.select('.tem .low')[0].text.strip() print(date, condition, high_temp, low_temp) ``` 解释一下代码: 1. 首先,我们需要找到天气数据的来源网站。这里我选择了中国天气网(http://www.weather.com.cn/)。 2. 我们使用 requests 库来向该网站发送 HTTP 请求,并使用 BeautifulSoup 库对返回的 HTML 页面进行解析。 3. 通过分析 HTML 页面,我们可以找到所需的天气数据在 class 为 “t clearfix” 的 div 元素下。我们使用 select 方法选择该元素,并遍历所有天气信息。 4. 对于每一个天气信息,我们可以从 HTML 中找到日期、天气状况、最高温度和最低温度等信息,并进行提取和打印。 以上代码只是一个简单的示例,实际爬取天气数据可能会涉及到更多的数据处理和异常处理。 ### 回答2: Python爬虫可以用来爬取天气数据,通过抓取天气网站上的信息,获取实时或历史天气数据,并进行进一步的分析和处理。 首先,我们需要了解要爬取天气网站的结构和数据的位置。通常,天气网站会提供API接口或者发布天气数据的HTML页面。我们可以通过分析网页结构,确定需要爬取数据在源代码中的位置。 接下来,我们可以使用Python中的第三方库,例如requests和BeautifulSoup来实现爬虫功能。使用requests库可以发送HTTP请求,获取网页源代码,而使用BeautifulSoup库可以方便地解析HTML页面,提取需要的数据。 如果网站提供API接口,我们可以直接使用requests库发送GET请求,获取到JSON格式的数据。然后,我们可以使用Python的json库对数据进行解析,并提取出所需的天气信息。 如果网站提供天气数据的HTML页面,我们可以使用requests库获取到页面的源代码,然后使用BeautifulSoup库解析HTML,提取出对应的天气数据。我们可以通过标签名称、CSS选择器或XPath来定位需要的数据。 在获取到天气数据之后,我们可以进一步处理和分析这些数据。例如,我们可以提取温度、湿度、风力等关键信息,并进行数据可视化、统计分析或者机器学习预测。Python中的matplotlib、pandas和scikit-learn等库可以帮助我们进行这些进一步的处理和分析。 总而言之,使用Python爬虫爬取天气数据可以帮助我们获取到所需的天气信息,并进行进一步的分析和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一只程序猿子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值