python爬虫可视化题目北京空气质量监测数据获取与分析

任务1:数据采集

网页“http://pm25.in/beijing”中包含北京12个监测点的空气质量监测数据,请编写程序抓取网页(网页样本保存在源素材文件夹下src1目录中)上的监测点、AQI、空气质量指数类别,如表H2-1-1所示。将抓取的数据保存,以bj20200721.csv文件命名。
表H2-1-1 北京空气质量监测数据
监测点 AQI 空气质量指数类别
万寿西宫 57 良
…… …… ……
1)使用Pycharm在考生文件夹下创建项目task030101,在项目下创建python文件,命名为task1.py。将源素材文件夹下的src1目录复制到项目task030101下。
2)根据实际项目需求进行问题分析,书写注释。
3)编写程序,正确爬取网页中的数据,运行程序并显示“已爬取”。
4)编写程序,将抓取的数据保存在项目task030101下,以bj20200721.csv文件命名,分隔符为tab键,运行程序并显示“已保存”。
5)将运行结果截图,保存在考生文件夹下,以task1.jpg文件命名。
**

答案:

import bs4
from bs4 import BeautifulSoup
from urllib import request
import pandas
## 解析网页内容
# ulist:保存解析后的网页内容,  html:传入的网页内容
def jiexi(ulist,html):
    soup = BeautifulSoup(html, 'html.parser') ##创建BeautifulSoup对象,并指定BeautifulSoup中TreeBuilder的解析器为html.parser
    for tr in soup.find('tbody').children: ## 循环标签tbody下的所有tr标签,一个迭代对象
        if isinstance(tr,bs4.element.Tag): ## 判断是否bs4.element.Tag类型
            tds = tr('td')  ## 得到这一行中的数据
            ulist.append([tds[0].string,tds[1].string,tds[2].string]) ## 添加到三个

## 分析数据,等到二维表格
def tofile(ulist):
    data = pandas.DataFrame(ulist)  ##数据框架,制作二维表
    data.columns =['监测点','AQI','空气质量指数类别']  ## 设置列名
    data.to_csv('./bj20200721.csv',header=True,sep='\t',index=False)  ## 写入csv
## 主函数
def main():
    uinfo=[]
    url='http://pm25.in/beijing' ##得到网页地址
    html = request.urlopen(url).read().decode('utf-8') ##打开网页,并读取网页,设置编码格式
    jiexi(uinfo,html) ## 调用jiexi函数
    print("已爬取")
    tofile(uinfo)   ##调用tofile函数
    print('已保存')
#     主接口
if __name__ == '__main__':
    main()

任务2:数据处理和分析

**
使用Python的pandas读取bj20200721.csv文件(bj20200721.csv文件保存在源素材文件夹下task030102\src2目录中),完成数据处理和分析。
1)将源素材文件夹下task030102项目复制到考生文件夹下,使用Pycharm打开项目task030102,打开task2.py。
2)根据实际项目需求进行问题分析,书写注释。
3)编写程序,完成readFile(filename)函数的定义,使用pandas读取bj20200721.csv文件中的数据,返回值类型为DataFrame。
4)编写程序,完成printInfo(filename)函数定义,显示bj20200721.csv文件中的内容,如图H2-1-1所示。

图H2-1-1显示bj20200721.csv文件中的内容
5)编写程序,完成insertDate(filename)函数的定义,将2020-07-21日期数据作为新的一列添加到Excel文件中,列名称为“监测日期”,保存在项目task030102下,文件命名为bj20200721.xlsx。
6)编写程序,完成aqi(filename)函数的定义,显示空气质量指数类别为优的记录。
7)编写程序,导入模块,调用自定义的readFile、printInfo、insertDate、aqi函数,实现上述功能,注意参数的正确设置。
8)将运行结果截图,保存在考生文件夹下,以task2.jpg文件命名。

答案:

import pandas  ## pandas 提供了大连能使我们快速便捷的处理数据的函数和方法

# 读取数据
def readFile(filename):
    file = pandas.read_csv(filename, sep='\t', encoding='utf-8') ##读取csv文件
    return file


# 显示内容
def printInfo(filename):
    file = readFile(filename)  ## 读取数据
    print(file)

# 插入数据
def insertDate(filename):
   file = readFile(filename)
   file['监测日期'] = pandas.to_datetime('2021-09-10') ##插入列
   file.to_excel('./bj20200721.xlsx') ## 写入excel格式文件中

# 筛选数据
def aqi(filename):
    file = readFile(filename)
    print(file.loc[file['空气质量指数类别'] == '优'])  ## 筛选空气质量指数类别为优的数据


if __name__ == '__main__':
    filename = './bj20200721.csv'
    readFile(filename)
    printInfo(filename)
    print('----------------------------------------')
    insertDate(filename)
    print('插入时间成功')
    print('-----------------------------------')
    aqi(filename)

任务3:数据可视化

使用Python读取bj20200721.csv文件(bj20200721.csv文件保存在源素材文件夹下src3目录中)中的数据,使用matplotlib绘制直方图,显示aqi最少的4个监测点。
1)使用Pycharm在考生文件夹下创建项目task030103,在项目下创建python文件,命名为task3.py。将源素材文件夹下的src3目录复制到项目task030103下。
2)根据实际项目需求进行问题分析,书写注释。
3)编写程序,使用pandas读取bj20200721.csv文件中的数据。使用matplotlib绘制直方图,显示AQI最少的4个监测点,如图H2-1-2所示。生成的文件保存在项目task030103下,文件命名为aqi.png。
答案:

import pandas as pd
import matplotlib.pyplot as plt
# 设置格式显示中文,显示正负号
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = 'False'
# 读取文件
data = pd.read_csv('./src3/bj20200721.csv', sep='\t', encoding='utf-8')
# 设置画布大小,清晰度
plt.figure(figsize=(8, 7), dpi=100)
# 设置标题
plt.title('20200721北京AQI最少的4个监测点')
# 给读取的文件按值排序  by:排序类别   ascending:是否升序  选取前4个
file = data.sort_values(by='AQI', ascending=True)[:4]
print(file)
# 绘制直方图,设置横纵坐标,宽度
plt.bar(file['监测点'], file['AQI'], width=0.8)
plt.xlabel('监测点')  # 添加x轴名称
plt.ylabel('AQI')    # 添加y轴名称
plt.savefig('./api.png')  # 图形保存到本地
plt.show()

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
爬取空气质量检测网的部分城市的历年每天质量数据 思路----------------------------------------- 从某城市的空气质量网页获取某市每月的链接,再爬取每个月的表格数据。连云港市:https://www.aqistudy.cn/historydata/daydata.php?city=连云港 连云港2014年5月的空气质量:https://www.aqistudy.cn/historydata/daydata.php?city=连云港&month=2014-05 遇到的问题----------------------------------------- 获取的网页中的表格数据隐藏,尝试requests无法获取。判断可能是动态加载的网页 尝试----------------------------------------- 1. 通过XHR,js查找隐藏数据的加载网页,没有找到。 2. 使用phantomjs.get() result=pd.read_html ,可以获得隐藏的表格数据,但是并不稳定,只是偶尔出现加载的表格数据,无法大规模的获取 解决方法----------------------------------------- 查找资料得知这个网站的表格数据在Console里的items中, 使用selenium的webdriver.firefox(),driver.execute_script("return items") 数据可获得。 仍遇到的问题:----------------------------------------- 爬取一个网页可获得数据,但是连续的获取网页,会出现两个错误。 1.Message: ReferenceError: items is not defined 2.connection refused 解决方法: 1.connection refused问题,可能是网页开太多,使用driver.quit() 2. 如果 execute_script 还是出错,可尝试pd.read_html获取信息。之前用phantomjs获取的时候输出空的表格,可能由于加载不够,用 Waite直到table出现之后再获取网页 Element=wait.until(EC.element_to_be_clickable((By.XPATH,"/html/body/div[3]/div[1]/div[1]/table/tbody"))) 3.之后出现偶尔出现输出为空,使用循环,如果输出表格为空,再重新获取。 if len(result)>1: filename = str(month) + '.xls' result.to_excel('E:\python\案例程序\data\\' + filename) print('成功存入'+filename) driver.quit() else: driver.quit() return getdata(monthhref,month)
Python爬虫可视化数据分析是指使用Python编写爬虫程序来获取数据,然后使用可视化工具对数据进行分析和展示的过程。 在这个过程中,我们可以使用Python的各种库和框架来实现数据的爬取和处理。常用的爬虫库包括BeautifulSoup、Scrapy等,而数据分析可视化则可以使用Matplotlib、Pandas、Seaborn等库来实现。 首先,我们需要定位到需要爬取的数据源。在引用中提到的例子中,我们可以通过爬取短文学网(https://www.duanwenxue.com/jingdian/zheli/)来获取文章数据。 接下来,我们可以使用爬虫实现方法,例如在引用中提到的定位到爬取数据的方法来编写爬虫程序。通过解析网页的HTML结构,我们可以提取所需的数据,并保存到本地或者数据库中。 一旦数据被爬取并保存,我们可以使用数据可视化的方法来进行分析和展示。例如,我们可以使用Matplotlib绘制柱状图、折线图等来展示文章数量的统计情况,如引用中的将短文学网的各类文章做一个统计。 此外,我们还可以对某一类文章进行更深入的分析。通过使用Pandas和Seaborn等库,我们可以对文章的文字长度、情感倾向等进行统计和可视化分析,以获得更多有意义的信息。 总结起来,Python爬虫可视化数据分析是一个将爬取到的数据进行处理、统计和展示的过程。通过使用Python中的各种库和框架,我们可以实现爬虫程序的编写、数据的获取和处理,以及数据的可视化分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python爬虫及数据可视化分析](https://blog.csdn.net/Tbaodeng/article/details/111825063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python项目开发,毕业设计,开心麻花影视作品分析系统,含源码和使用说明.zip](https://download.csdn.net/download/sohoqq/88282650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

浏贻笑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值