栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

数据分析之爬虫实例-获取天气AQI数据-附python代码

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据分析之爬虫实例-获取天气AQI数据-附python代码

数据分析与数据挖掘的步骤流程:

1、明确目标。首先要熟悉业务背景,了解业务背景后,才能明确目标。如去分析电商业务流量与转化率的关系,广告业务如何确定单次点击竞价增加点击率和有效访问率,产品业务根据PV,UV,用户留存增长ARPU(利润或者金额),供应链业务:如工厂,饭店的订货量预测,营销业务:根据已有数据如何提高ROI(投资回报率)及金融行业的风险控制等等。

2、数据搜集。哪些数据会影响问题答案,然后搜集相关的数据。如网上已有数据,爬虫,API。

3、数据清洗。数据质量分析,缺失值(空值),异常值(异常),一致性分析(不能矛盾,不能是多数据源数据,消除量纲影响,保证数据来源一致,时间节点一致)。

4、构建模型。常用的数据挖掘模型,回归预测,分类,聚类。如线性回归,逻辑回归,决策树,SVM,GBDT, 贝叶斯,神经网络,K-means聚类模型等等。后面有时间总结一下。

5、模型评估。如何评价模型的好坏,是否存在过拟合,可采用一些预测准确率,均方误差,交叉熵损失函数等。

6、应用部署。基于业务要服务于客户,需要将模型部署到系统中。如推荐系统,精准营销等。

本次利用爬虫爬取某气象网站的天气AQI(Air Quality Index, 空气质量指数)数据,并用图表工具分析数据,来判断福建省福州市,泉州市,厦门市近5年来空气质量是否有某些变化。

有兴趣的可以去查一下AQI的计算公式等。

爬虫四步骤:

1、获取链接。要查找数据的网址。这里用的天气后报。

2、发送请求。

3、筛选数据。目前有很多方法可以解析,正则表达式,json,bs4,xpath等等。

4、保存数据。

代码如下:

import time
import requests
import random
from bs4 import BeautifulSoup

# 生成请求头,浏览器可看
headers = {
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.33'
}
citys = ['fuzhou', 'quanzhou', 'xiamen']
for i in range(len(citys)):
    filename = 'Air_AQI_' + citys[i] + '.csv'
    with open(filename, 'a+', encoding='utf-8-sig') as f:#写列标签
        f.write('Date' + ',' + 'Quality_grade' + ',' + 'AQI' + ',' + 'AQI_rank' + ',' + 'PM2_5' + ',' + 'PM10' + ',' + 'SO2' + ',' + 'NO2' + ',' + 'CO' + ',' + 'O3' + 'n')
    for year in range(2017,2022):#近五年
        for month in range(1, 13):  # 12个月
            # 停顿几秒,避免消耗对方服务器过多资源
            seconds = random.randint(2, 5)
            time.sleep(seconds)
            # 1.获取网址
            if citys[i] == 'fuzhou':#分支处理,福州的url有fujian
                url = 'http://www.tianqihoubao.com/aqi/fujian' + citys[i] + '-'+str("%04d" % year) +  str("%02d" % month) + '.html'
            else:
                url = 'http://www.tianqihoubao.com/aqi/' + citys[i] + '-' + str("%04d" % year) + str("%02d" % month) + '.html'
            # 2.发送请求
            response = requests.get(url=url, headers=headers)#得到响应
            # 3.筛选数据
            soup = BeautifulSoup(response.text, 'html.parser')#用靓汤提取
            tr = soup.find_all('tr')#用 BeautifulSoup 能更快速便捷地进行解析和提取,也可以用re,xpath等方法
            for k in tr[1:]:#从1开始是不生成列标题
                td = k.find_all('td')
                Date = td[0].get_text().strip()#去掉首尾换行符
                Quality_grade = td[1].get_text().strip()
                AQI = td[2].get_text().strip()
                AQI_rank = td[3].get_text().strip()
                PM2_5 = td[4].get_text().strip()
                PM10 = td[5].get_text().strip()
                SO2 = td[6].get_text().strip()
                NO2 = td[7].get_text().strip()
                CO = td[8].get_text().strip()
                O3 = td[9].get_text().strip()
                # 4.保存数据
                with open(filename, 'a+', encoding='utf-8-sig') as f:
                    f.write(Date + ',' + Quality_grade + ',' + AQI + ',' + AQI_rank + ',' + PM2_5 +',' +PM10+ ','+SO2+ ','+NO2+ ','+CO+ ','+O3+ 'n')

爬取数据如下:

 分析见另一篇文章

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号