数据分析之爬虫实例-获取天气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')

爬取数据如下:

数据分析之爬虫实例-获取天气AQI数据-附python代码_第1张图片

 分析见另一篇文章

你可能感兴趣的:(数据分析与数据挖掘之路,数据分析,数据挖掘,big,data,爬虫)