获取重庆空气质量历史数据写入csv文本

import re
import csv
import numpy
import codecs
from bs4 import BeautifulSoup
from urllib.request import urlopen


def get_table_head(url):
    """ 该函数用于获取带表头的数据 """
    html_bj = urlopen(url)
    bsp_bj = BeautifulSoup(html_bj, "lxml")  # 获取BeautifulSoup对象

    table_list = bsp_bj.findAll("tr")  # 获取所有的表格

    data_list = []
    table_head = table_list[0].get_text().strip("\n").split("\n\n")
    data_list.append(table_head)  # 获取表头

    return data_list


def get_data(url):
    """ 该函数用于获取不带表头的数据 """
    html_bj = urlopen(url)
    bsp_bj = BeautifulSoup(html_bj, "lxml")

    table_list = bsp_bj.findAll("tr")

    data_lists = []
    for data_list in table_list[1:]:
        data = data_list.get_text().replace(" ", "").replace("\n\r", ""). \
            strip("\n").split("\n")
        data_lists.append(data)

    return data_lists


# 兰州空气质量指数(AQI)-PM2.5查询地址:
start_url = "http://www.tianqihoubao.com/aqi/chongqing.html"
html = urlopen(start_url)
bso_bj = BeautifulSoup(html, "lxml")  # 获取BeautifulSoup对象

# 找到所有存放月度数据的网页链接,并以列表的形式按月份先后顺序保存这些链接
Sites = []
for link in bso_bj.findAll(href=re.compile("^(/aqi/chongqing-)")):
    site = "http://www.tianqihoubao.com" + link.attrs['href']
    Sites.append(site)
Sites.reverse()

Data_set = get_table_head(Sites[0])  # 获取表头

for url in Sites:
    data_set = get_data(url)        # 获取所有月度数据
    for data in data_set:
        del data[3]
    Data_set = numpy.row_stack((Data_set, data_set))   # 拼接表头和数据

with open("Data.csv", "w+") as csv_file:
    csv_file.write(codecs.BOM_UTF8.decode())
    writer = csv.writer(csv_file)
    for i in range(numpy.shape(Data_set)[0]):
        writer.writerow((Data_set[i, :]))    # 将数据逐行写入csv文件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值