计算机毕业设计:基于python天气数据爬虫可视化系统+气象数据+Django框架(源码)

2023-12-04

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业 项目实战6年之久了✌

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) >https://biyesheji0001.blog.csdn.net/article/details/134580993

毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 >https://blog.csdn.net/2201_75772776/article/details/133148685

1、项目介绍

技术栈:
Python语言、Flask框架、MySQL数据库、Bootstrap框架、css+js+HTML
天气预测: weather_yuce.py
机器学习——线性回归(Linear Regression) 预测算法

2、项目界面

(1)系统首页
在这里插入图片描述

(2)空气质量指数曲线和全国历史天气数据查询
在这里插入图片描述

(3)全国风力等级饼状图
在这里插入图片描述

(4)全国历史温度情况柱状图
在这里插入图片描述

(5)空气质量指数和极端温度曲线图
在这里插入图片描述

(6)历史天气数据实时爬取
在这里插入图片描述

(7)天气预测-----机器学习预测算法

在这里插入图片描述
(8)个人信息
在这里插入图片描述

(9)注册登录界面
在这里插入图片描述

(10)数据爬取界面
在这里插入图片描述

3、项目说明

基于Django的天气数据爬虫可视化分析系统是一个用于收集、分析和展示天气数据的Web应用程序。该系统基于Django框架,利用爬虫技术从可靠的天气数据源获取数据,并通过可视化分析工具展示数据结果。

该系统具有以下主要功能:

  1. 数据收集:系统使用爬虫技术从可靠的天气数据源抓取实时的天气数据。通过配置不同的数据源,可以获取不同地区的天气数据。

  2. 数据存储:获取的天气数据经过处理后,存储到数据库中,以便后续的分析和展示。

  3. 数据分析:系统提供多种数据分析功能,包括统计不同地区的温度、湿度、降水量等天气指标的变化趋势,以及不同城市之间的对比分析。

  4. 数据可视化:通过使用图表、地图等可视化工具,将天气数据以直观的方式展示出来。用户可以通过选择不同的时间范围、地区等参数,定制自己感兴趣的数据展示方式。

  5. 用户管理:系统支持多用户同时使用,每个用户可以创建自己的数据分析和展示项目,并设定对应的访问权限。

通过该系统,用户可以方便地获取和分析天气数据,从而更好地了解天气变化情况,为决策提供参考依据。同时,由于避免了敏感内容的出现,该系统在中国可以安全使用。

4、核心代码

import requests
from bs4 import BeautifulSoup 
import re
import pymysql
from datetime import datetime
import time,random


def getHTMLtext(url):   
  """请求获得网页内容"""
  try: 
   headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"}       
   r = requests.get(url, headers=headers,timeout = 30)    
   r.raise_for_status()        
   r.encoding = r.apparent_encoding     
   print("成功访问",url)  
   time.sleep(random.randint(1,4))
   #保存到txt
  #  with open("output.txt", "w", encoding="utf-8") as f:
  #       f.write(r.text)      
   return r.text    
  except:        
   print("访问错误")       
   return "1111"
  



#处理数据
def get_content(html): 
    final_list =[]
    final1 = []          # 初始化一个列表保存数据  
    bs = BeautifulSoup(html, "html.parser")  # 创建BeautifulSoup对象  
    body = bs.body  
    tian_two = body.find_all('ul', {'class': 'tian_two'})
    #print(tian_two)
    
    #提取数据并插入到数据库中
    high = tian_two[0].find_all('div', class_='tian_twoa')[0].text
    low = tian_two[0].find_all('div', class_='tian_twoa')[1].text
    extreme_high = tian_two[0].find_all('div', class_='tian_twoa')[2].text
    extreme_low = tian_two[0].find_all('div', class_='tian_twoa')[3].text
    average_air_index = tian_two[0].find_all('div', class_='tian_twoa')[4].text
    best_air = tian_two[0].find_all('div', class_='tian_twoa')[5].text
    worst_air = tian_two[0].find_all('div', class_='tian_twoa')[6].text
    final1.append(float(re.findall(r'[-+]?\d+\.?\d*', high)[0]))  #平均高温
    final1.append(float(re.findall(r'[-+]?\d+\.?\d*', low)[0]))  #平均低温
    final1.append(float(re.findall(r'[-+]?\d+\.?\d*', extreme_high)[0]))   #极端高温
    try:
      final1.append(float(re.findall(r'[-+]?\d+\.?\d*', extreme_low)[0]))    #极端低温
    except:
      final1.append(0)    #极端低温
    final1.append(average_air_index)   #平均空气质量指数
    final1.append(best_air)    #空气最好
    final1.append(worst_air)   #空气最差
    #print(high,low,extreme_high,extreme_low,average_air_index,best_air,worst_air)
    final_list.append(final1)
    thrui = body.find_all('ul', {'class': 'thrui'})
    for li in thrui[0].find_all('li'):
      final2 = []  
      date = li.find('div', class_='th200').text.strip()
      max_temperature = li.find_all('div', class_='th140')[0].text.strip()
      min_temperature = li.find_all('div', class_='th140')[1].text.strip()
      weather = li.find_all('div', class_='th140')[2].text.strip()
      wind_direction = li.find_all('div', class_='th140')[3].text.strip()
      wind_level =  int(re.findall(r'\d+\.?\d*', wind_direction)[0])
      #print(f'日期:{date.split(" ")[0]},最高气温:{max_temperature},最低气温:{min_temperature},天气:{weather},风向:{wind_direction},风力等级:{wind_level}')
      final2.append(date.split(" ")[0])
      try:
        final2.append(float(re.findall(r'[-+]?\d+\.?\d*', max_temperature)[0]))
      except:
        final2.append(0)
      try:
        final2.append(float(re.findall(r'[-+]?\d+\.?\d*', min_temperature)[0]))
      except:
        final2.append(0)
      try:
        final2.append(weather)
      except:
        final2.append('无')
      final2.append(wind_direction.split(" ")[0])
      final2.append(wind_level)
      final_list.append(final2)


    return  final_list


#数据保存
def saveDate(data_list,city,month):
  #获取当前时间
  current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
  # 连接到MySQL数据库
  conn = pymysql.connect(host='127.0.0.1', user='root', password='123456', db='flask_weather', charset='utf8')
  cursor = conn.cursor()
  for index, data in enumerate(data_list):
    if  index == 0:
      cursor.execute('INSERT INTO t_monthcityweather (city_name, month_time, high_temperature, low_temperature, extreme_high_temperature, \
                     extreme_low_temperature, average_air_index,best_air,worst_air,add_date,pub_date) \
      VALUES (%s,%s,%s, %s, %s, %s, %s, %s, %s, %s, %s)', (city,month,data[0], data[1], data[2], data[3], data[4], data[5], data[6],current_time,current_time))
    else :
       cursor.execute('INSERT INTO t_cityweather (city_name, date_time, max_temperature, main_temperature, weather_conditions, \
                     wind_direction, wind_level,add_date,pub_date) \
      VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)', (city,data[0], data[1], data[2], data[3], data[4],data[5],current_time,current_time))
       

  # 提交事务并关闭连接
  conn.commit()
  cursor.close()
  conn.close()
  return '数据保存结束'

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机毕业设计:基于python天气数据爬虫可视化系统+气象数据+Django框架(源码) 的相关文章

  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐