基于Python的网络爬虫爬取天气数据可视化分析

这篇具有很好参考价值的文章主要介绍了基于Python的网络爬虫爬取天气数据可视化分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
摘 要 1
一、 设计目的 2
二、 设计任务内容 3
三、 常用爬虫框架比较 3
四、网络爬虫程序总体设计 3
四、 网络爬虫程序详细设计 4
4.1设计环境和目标分析 4
4.2爬虫运行流程分析 5
爬虫基本流程 5
发起请求 5
获取响应内容 5
解析数据 5
保存数据 5
Request和Response 5
Request 5
Response 5
请求方式 5
GET 5
POST 5
URL 6
请求体 6
4.3控制模块详细设计 6
v = [] 8
v = [] 9
六、调试与测试 11
七、心得体会 12
参考文献 13
在本爬虫程序中共有三个模块:
1.爬虫调度端:启动爬虫,停止爬虫,监视爬虫的运行情况
2.爬虫模块:包含三个小模块,URL管理器,网页下载器,网页解析器。
(1)URL管理器:对需要爬取的URL和已经爬取过的URL进行管理,可以从URL管理器中取出一个带爬取的URL,传递给网页下载器。
(2)网页下载器:网页下载器将URL指定的网页下载下来,存储成一个字符串,传递给网页解析器。
(3)网页解析器:网页解析器解析传递的字符串,解析器不仅可以解析出需要爬取的数据,而且还可以解析出每一个网页只想其他网页的URL,这些URL被解析出来会补充进URL管理器
3、数据输出模块:存储爬取的数据
四、网络爬虫程序详细设计
4.1设计环境和目标分析
设计环境
IDE:pycharm
Python版本:python3
目标分析
1、初始URL:www.tianqihoubao.com/aqi 先通过url获取到网页。
2、数据格式

3、页面编码:UTF—8
4.2爬虫运行流程分析
爬虫基本流程
发起请求
通过HTTP库向目标服务器发送Request,Request内可以包含额外的headers信息。
获取响应内容
如果服务器正常响应,会返回Response, 里面包含的就是该页面的内容。
解析数据
内容或许是HTML,可以用正则表达式、网页解析库进行解析。
或许是Json,可以直接转换为Json对象解析。
保存数据
可以存储为文本,也可以保存至数据库,或其他特定类型文件。
Request和Response
Request
主机向服务器发送数据请求时的过程叫做HTTP Request
Response
服务器向主机返回数据的过程叫做HTTP Response
Request中包含的内容
请求方式
常用的有GET,POST两种类型。
GET
这种请求方式的参数都包含在网址里面。
POST
这种请求方式的参数包含在请求体中的form data中。相对安全。
URL
请求的网络链接。
请求头
包含请求时的头部信息。如:User-Agent、Host、Cookies等。
User-Agent
指定浏览器。
请求体
GET请求下一般情况请求体中不会包含重要信息。
POST请求中包含重要信息。
Response中包含的内容
响应状态
Status Code:200
即状态码,一般200表示响应成功。
响应头
Response Headers
内容类型,内容长度,服务器信息,设置Cookie等。
响应体
请求资源的内容,如网页源代码,二进制数据等。
4.3控制模块详细设计

爬取代码

import time
import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}

citys = ['beijing', 'shanghai', 'guangzhou', 'shenzhen']

for i in range(len(citys)):

    time.sleep(5)

    for j in range(1, 13):
        time.sleep(5)
        # 请求2018年各月份的数据页面
        url = 'http://www.tianqihoubao.com/aqi/' + citys[i] + '-2018' + str("%02d" % j) + '.html'
        # 有请求头(键值对形式表示请求头)
        response = requests.get(url=url, headers=headers)
        # html字符串创建BeautifulSoup对象
        soup = BeautifulSoup(response.text, 'html.parser')
        tr = soup.find_all('tr')

        for k in tr[1:]:
            td = k.find_all('td')
            # 日期
            Date = td[0].get_text().strip()
            # 质量等级
            Quality_grade = td[1].get_text().strip()
            # AQI指数
            AQI = td[2].get_text().strip()
            # 当天AQI排名
            AQI_rank = td[3].get_text().strip()
            # PM2.5
            PM = td[4].get_text()
            # 数据存储
            filename = 'air_' + citys[i] + '_2018.csv'
            with open(filename, 'a+', encoding='utf-8-sig') as f:
                f.write(Date + ',' + Quality_grade + ',' + AQI + ',' + AQI_rank + ',' + PM + '\n')
分析代码
import numpy as np
import pandas as pd
from pyecharts import Line

citys = ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
v = []
for i in range(4):
    filename = 'air_' + citys[i] + '_2018.csv'
    df = pd.read_csv(filename, header=None, names=["Date", "Quality_grade", "AQI", "AQI_rank", "PM"])

    dom = df[['Date', 'AQI']]
    list1 = []
    for j in dom['Date']:
        time = j.split('-')[1]
        list1.append(time)
    df['month'] = list1

    month_message = df.groupby(['month'])
    month_com = month_message['AQI'].agg(['mean'])
    month_com.reset_index(inplace=True)
    month_com_last = month_com.sort_index()

    v1 = np.array(month_com_last['mean'])
    v1 = ["{}".format(int(i)) for i in v1]
    v.append(v1)

attr = ["{}".format(str(i) + '月') for i in range(1, 12)]

line = Line("2018年北上广深AQI全年走势图", title_pos='center', title_top='0', width=800, height=400)
line.add("北京", attr, v[0], line_color='red', legend_top='8%')
line.add("上海", attr, v[1], line_color='purple', legend_top='8%')
line.add("广州", attr, v[2], line_color='blue', legend_top='8%')
line.add("深圳", attr, v[3], line_color='orange', legend_top='8%')
line.render("2018年北上广深AQI全年走势图.html")

import numpy as np
import pandas as pd
from pyecharts import Pie, Grid

citys = ['beijing', 'shanghai', 'guangzhou', 'shenzhen']
v = []
attrs = []
for i in range(4):
    filename = 'air_' + citys[i] + '_2018.csv'
    df = pd.read_csv(filename, header=None, names=["Date", "Quality_grade", "AQI", "AQI_rank", "PM"])

    rank_message = df.groupby(['Quality_grade'])
    rank_com = rank_message['Quality_grade'].agg(['count'])
    rank_com.reset_index(inplace=True)
    rank_com_last = rank_com.sort_values('count', ascending=False)

    attr = rank_com_last['Quality_grade']
    attr = np.array(rank_com_last['Quality_grade'])
    attrs.append(attr)
    v1 = rank_com_last['count']
    v1 = np.array(rank_com_last['count'])
    v.append(v1)

pie1 = Pie("北京", title_pos="28%", title_top="24%")
pie1.add("", attrs[0], v[0], radius=[25, 40], center=[30, 27], legend_pos="27%", legend_top="51%", legend_orient="horizontal",)

pie2 = Pie("上海", title_pos="58%", title_top="24%")
pie2.add("", attrs[1], v[1], radius=[25, 40], center=[60, 27], is_label_show=False, is_legend_show=False)

pie3 = Pie("广州", title_pos='28%', title_top='77%')
pie3.add("", attrs[2], v[2], radius=[25, 40], center=[30, 80], is_label_show=False, is_legend_show=False)

pie4 = Pie("深圳", title_pos='58%', title_top='77%')
pie4.add("", attrs[3], v[3], radius=[25, 40], center=[60, 80], is_label_show=False, is_legend_show=False)

grid = Grid("2018年北上广深全年空气质量情况", width=1200)
grid.add(pie1)
grid.add(pie2)
grid.add(pie3)
grid.add(pie4)
grid.render('2018年北上广深全年空气质量情况.html')

基于Python的网络爬虫爬取天气数据可视化分析
基于Python的网络爬虫爬取天气数据可视化分析
基于Python的网络爬虫爬取天气数据可视化分析
基于Python的网络爬虫爬取天气数据可视化分析
基于Python的网络爬虫爬取天气数据可视化分析
基于Python的网络爬虫爬取天气数据可视化分析
基于Python的网络爬虫爬取天气数据可视化分析
基于Python的网络爬虫爬取天气数据可视化分析文章来源地址https://www.toymoban.com/news/detail-476550.html

到了这里,关于基于Python的网络爬虫爬取天气数据可视化分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬取城市天气数据,并作数据可视化

    1.爬取广惠河深2022-2024年的天气数据  爬取的数据如下图所示     2.读取csv文件 3.去除多余字符 4.分割星期和日期 5.筛选出城市数据子集。其中包含了四个城市在不同天气下的天数统计结果。    6.将原有的天气类型按照划分 7.对城市的天气数据按照新天气列分组后,

    2024年02月10日
    浏览(32)
  • Python网络爬虫爬取招聘数据(利用python简单零基础)可做可视化

    身为一个求职者,或者说是对于未来的职业规划还没明确目标的大学生来说,获取各大招聘网上的数据对我们自身的发展具有的帮助作用,本文章就简答零基础的来介绍一下如何爬取招聘数据。 我们以东莞的Python数据分析师这个职位来做一个简单的分析,页面如下图所示:

    2024年02月03日
    浏览(35)
  • python爬取天气数据并做可视化分析

    历史天气数据schema { ‘当日信息’:\\\'2023-01-01 星期日\\\', \\\'最高气温\\\': 8℃\\\'\\\', \\\'最低气温\\\': \\\'5℃\\\', ‘天气’: \\\'多云\\\', \\\'风向信息\\\':\\\'北风 3级\\\' } 1.导入库 2.对程序进行伪装 3.抓取天气数据 在数据存储前,对数据进行处理,便于后期的数据分析。将上面的“当天信息”字段拆分为“日期”

    2024年02月04日
    浏览(31)
  • 毕业设计:python全国天气气象数据爬取分析可视化系统+大屏+大数据(源码+文档)

    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专

    2024年02月02日
    浏览(37)
  • 【数据可视化】通过使用网络爬虫对数据爬取并进行可视化分析

      本次项目所爬取的网页为柳州职业技术学院电子信息工程学院的超星学习通课程中心。在该网页中可以查看到电子信息工程学院历年的超星课程创建情况,还可以进入到课程界面查看相应的教学资源。   在该网页中,详细记录了课程序号、课程名称、课程链接、所属院

    2024年02月04日
    浏览(42)
  • python爬虫爬取电影数据并做可视化

    1、发送请求,解析html里面的数据 2、保存到csv文件 3、数据处理 4、数据可视化 需要用到的库: 注意:后续用到分词库jieba以及词频统计库nltk    解释器: python  3.10.5 编辑器:VsCode -jupyter-notebook 使用ipynb文件的扩展名 vscode会提示安装jupyter插件 效果: 注意:使用jieba分词,

    2024年02月07日
    浏览(28)
  • 基于python淘宝商品数据爬虫分析可视化系统 网络爬虫+Flask框架+MySQL数据库 大数据 毕业设计

    python语言、Flask框架、淘宝商品数据、selenium网络爬虫、MySQL数据库、数据分析、Echarts可视化大数据毕业设计、爬取 Selenium网络爬虫淘宝商品数据可视化系统是一个基于Python和Selenium的Web爬虫应用程序,可以实现对淘宝上特定商品的价格、销量、评价等数据进行自动化抓

    2024年02月16日
    浏览(41)
  • Flask+echarts爬取天气预报数据并实现可视化

    右键新建一个crawl.py文件,代码如下,将爬取到的数据存储到tianqi.txt文件中, 右键新建一个flask01.py的文件,对爬取到的数据进行读取,并转换为列表类型,传递给index.html页面,echarts的图表样例负责接收并渲染,代码如下, 在根目录下,新建一个名为templates目录,该目录名

    2024年02月11日
    浏览(29)
  • Python项目开发:Flask基于Python的天气数据可视化平台

    目录 步骤一:数据获取 步骤二:设置Flask应用程序 步骤三:处理用户输入和数据可视化 步骤四:渲染HTML模板 总结 在这个数字化时代,数据可视化已经成为我们理解和解释信息的重要手段。在这个项目中,我们将使用Python语言来开发一个基于Flask框架的天气数据可视化平台

    2024年02月09日
    浏览(46)
  • 基于python天气数据的预测分析及可视化系统 毕业设计开题报告

     博主介绍 :《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月04日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包