python 爬取24小时天气数据

python 爬取24小时天气数据

1、引入相关库

# -*- coding: utf-8 -*-
import requests
import numpy as np

关于爬虫,就是在网页上找到自己想要的数据 ,或者是进行训练,或者是(anyway)…众所周知,在python爬虫的时候,requests是重要的请求数据的库,如果大家是pycharm的编译器,可以在setting中设置,这个不多说,大家心中有数,引入numpy的原因是接下来方便对数据的进行处理。

1.1 开始爬取

话不多说,请开始你的表演

r = requests.get("http://tianqi.2345.com/t/wea_hour_js/53446_2.js?1576984476500")

至于这里面的URL,我为大家解释一下,如何在网页中找到合适的数据。
1、爬虫就是在网页的源码中,找到自己想要的数据,进而存取下来,我们现在需要爬取天气的数据,那么这个时候找到2345天气网,进去后进入开发者模式,或者(F12)均可,点击network,点击JS,每当你刷新网页的时候就会出现新的回应。如下图

图一:天气数据网在这里插入图片描述
这样我们就得了网页的URL,通过我们刚刚说的Requests模块进行爬取。那么,我们想要的数据在哪里呢?在response里面,如下图所示。在这里插入图片描述
红色的部分就是我们需要的数据,我们不妨将其打印出来看看,在这里插入图片描述
这是整个response的结果,很显然,我们需要得到的是一个比较直白的JSON 的数据格式,所以我们对其做一个简单处理。

r.text[16:-32]

这里就是把他的头和尾去掉,然后得到相对直白的数据格式。到这里我们已经得到了网页的数据内容,是不是有点开心,但是我们光得到是不行的,还要真正的拿到————————数据的存储

1.2数据存储

1.2.1 数据分割

在数据存储之前,我们将得到的字符串进行转化成一个数组,首先将其切割为一个一个的数组,用逗号分割开。并将其打印出来。

r_list = r.text[16:-32].split(",")
for i in range(len(r_list)):
    print(r_list[i])

1.2.2 数据存储

先导入pandas库,因为它包含有存储数据的功能

import pandas as pd

整个的数据是一天24个小时的数据,我现在想得到温度(temp
和小时(hour),我们用数组a将其分别存放temp和hour,然后用一个变量tian做循环,不断更新每个小时的数据。而且用DataFrame函数将其存储到excel表格中,这就是一个完整的爬取存储过程。

a = np.zeros((24,2),dtype=int)     //定义一个数组,24行,2列
tian = 0                           //tian作为一个自增的变量
for i in range(len(r_list)):       
    if (r_list[i][1:5])=="temp":   //因为temp在打印出来的结果是“temp”所以要得到temp,那就是1-5了。
        #print(int(r_list[i][9:-1]))
        a[tian,0] = int(r_list[i][8:-1])  //这里面将第一位temp找到并放入第一位中
            if(r_list[i][1:5])=="hour":    //同理
        #print(int(r_list[i][8:-1]))
        a[tian,1] = int(r_list[i][8:-2])
        tian = tian + 1                 //进行循环,搜集下一下的数据。
#np.savetxt(str(1)+".csv", a, delimiter=',')

data = pd.DataFrame(a)             //将这样的数组拿到后,存到EXCEl中。就ok了
writer = pd.ExcelWriter('12月21日3.xlsx')
data.to_excel(writer, 'page_1', float_format='%.5f')
writer.save()
writer.close()
print(a)

打印出来的结果就是这样
在这里插入图片描述

完整的代码

# -*- coding: utf-8 -*-
import requests
import numpy as np
r = requests.get("http://tianqi.2345.com/t/wea_hour_js/53446_2.js?1576984476500")
print(r.headers)
print(r.encoding)
r.apparent_encoding
r.encoding='utf-8'
r.text[0:-1]
r.text[16:-32]
r_list = r.text[16:-32].split(",")
for i in range(len(r_list)):
    print(r_list[i])
help(np.zeros)
import pandas as pd
a = np.zeros((24,2),dtype=int)
tian = 0 
for i in range(len(r_list)):
    if (r_list[i][1:5])=="temp":
        #print(int(r_list[i][9:-1]))
        a[tian,0] = int(r_list[i][8:-1])
    if(r_list[i][1:5])=="hour":
        #print(int(r_list[i][8:-1]))
        a[tian,1] = int(r_list[i][8:-2])
        tian = tian + 1
#np.savetxt(str(1)+".csv", a, delimiter=',')

data = pd.DataFrame(a)
writer = pd.ExcelWriter('12月21日3.xlsx')
data.to_excel(writer, 'page_1', float_format='%.5f')
writer.save()
writer.close()
print(a)

如果对你有帮助,抖音搜索ztd0520,来吧,lxd

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,您想了解如何用 Python 爬取历史天气数据,是吗? 首先,需要确定您想要爬取哪个地区的历史天气数据。一般来说,可以通过查询该地区的气象局或气象网站获取历史天气数据。 接着,可以使用 Python 中的 requests 库来发送 HTTP 请求,获取网页源代码。然后,可以使用 BeautifulSoup 库来解析网页源代码,提取出所需的天气数据。 以下是一个简单的示例代码,用于爬取中国天气网上北京市 2019 年 1 月份的历史天气数据: ``` python import requests from bs4 import BeautifulSoup url = 'http://www.weather.com.cn/weather/101010100.shtml#dt' 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'} r = requests.get(url, headers=headers) r.encoding = 'utf-8' soup = BeautifulSoup(r.text, 'html.parser') weather_list = soup.select('.t li') for weather in weather_list: date = weather.select('.time')[0].text weather_detail = weather.select('.temp')[0].text.strip() print(date, weather_detail) ``` 以上代码中,我们首先通过 requests 库发送了一个 GET 请求,获取了北京市天气网的网页源代码。然后,使用 BeautifulSoup 库解析网页源代码,提取出了 2019 年 1 月份的天气数据,并打印输出了日期和天气详情。 需要注意的是,不同的网站网页结构不同,需要根据具体情况修改代码。同时,需要注意网站的 robots.txt 文件,不要过度访问网站,以免被封 IP 或其他限制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值