论文题目

选题依据

天气预测是指综合使用现代科学技术对某一地区未来一段时间的温度、湿度、风力、风向、天气状况等进行预测。在当今社会,天气预测对人们的生产生活有着举足轻重的影响,与日常出行、农业生产、自然灾害预防等多个领域息息相关,是现代社会正常运转不可或缺的一个部分。随着气象数据规模的不断增大,以大数据为代表的自动化、智能化技术在天气预测中开始发挥重要作用。

Python是一种跨平台的解释型面向对象程序设计语言,语法简单,可读性强,最初被用于编写自动化脚本,随着版本的不断更新和语言的不断发展,广泛应用于以人工智能为代表的应用开发领域。目前,Python 已成为大学教学中的首选语言,在统计学、人工智能、脚本编写、系统测试等诸多领域均排名第一。TIOBE2019年一月发布的排行榜显示,Python第三次获得TIOBE最佳年度语言称号,是获奖次数最多的编程语言。

本文首先介绍了天气预测的概念,阐述了天气预测对生产生活的重要影响。接着,从发展历程、特点两个方面对Python进行了分析,并介绍了如何搭建Python开发环境。随后,介绍了网络爬虫的概念,从原理和分类两个方面对网络爬虫进行了研究,在上述基础上,分析了基于Python的网络爬虫技术,设计并实现了基于Python的天气预测系统。

文献综述

早在17 世纪80 年代,人类就进行了在气象大数据可视化方面的尝试,这次尝试来源于英国科学家埃德蒙·哈雷,凭借整理和计算大量数据的才能,哈雷绘制了世界上第一张载有海洋盛行风分布的气象图,以地图为依托,对信风的分布状况做了全球性的统计分析,并将分布状态生动的展现在世人面前,这也是有史可依的最早的气象数据可视化案例。

如今,气象数据可视化已经发展到了全新的时代。在美国National Weather Service 网站上,气象数据信息已经实现了以地图为载体的全面可视化展示,文字描述变成了辅助信息,图形可以一目了然的传达不同地理区划内各类气候历史资料和实时的天气实况、预报数据。

随着气象数据的监测和预报的高度发展、以及自动化水平的不断提升,气象数据信息也正呈现爆发式增长的趋势。而同时,伴随着媒体技术的发展,受众对于气象服务信息的需求也逐步从传统媒体的单向传达向全媒体的交互式体验转变,单一的讲述方式已经不再是让受众接收气象信息的有力途径。而在这个变化的过程当中,人们对于气象信息本身的需求也不再是单一的“明天下雨吗”,而是需要对天气原理、气候统计等方面越来越专业化、深入化的系统解答。这种受众需求的引领,也推动了气象服务向数据信息可视化方向全面发展。

研究内容

本文首先介绍了天气预测的概念,阐述了天气预测对生产生活的重要影响。接着,从发展历程、特点两个方面对Python进行了分析,并介绍了如何搭建Python开发环境[2]。随后,介绍了网络爬虫的概念,从原理和分类两个方面对网络爬虫进行了研究,在上述基础上,分析了基于Python的网络爬虫技术,使用hadoop+spark做数据分析,然后使用线性归回算法预测气温,可以根据最近7天数据预测之后的3天主要城市气温数据

本课题备以下功能内容:

1、Python爬虫模块:使用requests爬取腾讯天气的气象数据作为分析数据集存入mysql[4];

2、Spark实时计算模块:集成SparkSQL完成气象数据统计指标的计算提取;

3、数据预测模块:使用Python线性回归预测模型对气象数据进行分析,并将结果以json的形式推送给前端UI界面;

4、数据可视化模块:使用echarts实现数据可视化大屏[5];

研究方法

调查法:统的搜集有关天气数据的具体信息。

线性回归预测模型:用:使用Python线性回归预测模型对气象数据进行分析

文献研究法:通过搜集和查阅大量国内外学者关于天气预测相关的研究,以及各大天气数据网站上的相关信息,梳理出影响天气气候的因素。

实证研究法:依据现有的科学理论和实践的需要提出设计。

参考文献及资料

[1] 华丽,陈澄. 云计算环境下气象大数据服务应用 [J]. 农业与技术,2017,37(20):231+234.

[2] 屈世甲,武福生. 矿井风速数据预处理中Kalman 滤波方法 [J]. 煤矿安全,2016,47(1):116-118+122.

[3] 胡虎,杨侃,朱大伟,等. 基于EEMD-GRNN 的降水量预测分析 [J]. 水电能源科学,2017,35(4):10-14.

[4] 黄春艳,韩志伟,畅建霞,等. 基于EEMD 和GRNN 的降水量序列预测研究 [J]. 人民黄河,2017,39(5):26-28.

[5] 邢彩盈,张京红,黄海静. 基于BP 神经网络的海口住宅室内气温预测 [J]. 贵州气象,2016,40(5):38-42.

[6] 张晓伟,关东海,莫淑红. 和田绿洲气温与相对湿度的GM(1,1)预测模型 [J]. 中国农业气象,2006(1):31-33.

[7] 马楚焱,祖建,付清盼,等. 基于遗传神经网络模型的空气能见度预测 [J]. 环境工程学报,2015,9(4):1905-1910.

[8] 陈烨,高亚静,张建成. 基于离散Hopfield 模式识别样本的GRNN 非线性组合短期风速预测模型 [J]. 电力自动化设备,2015,35(8):131-136.

[9] 张鑫宇,宋瑾钰.LBS 系统研究现状综述 [J]. 工业控制计算机,2016,29(4):101-102+112.

[10] 钱海钢.Beacon 技术构建图书馆LBS 服务的分析 [J]. 农业图书情报学刊,2018,30(5):45-49.

[11] 肖锋,侯岳,王留召,等. 基于LBS 的智能信息推送技术研究 [J]. 测绘与空间地理信息,2015,38(6):125-127.

[12] 刘辉,郭梦梦,潘伟强. 个性化推荐系统综述 [J]. 常州大学学报(自然科学版),2017,29(3):51-59.

[13] 李社宏. 大数据时代气象数据分析应用的新趋势 [J]. 陕西气象,2014(2):41-44.

[14] 黄立威,江碧涛,吕守业,等. 基于深度学习的推荐系统研究综述 [J]. 计算机学报,2018,41(7):1619-1647.

[15] Zhao Junqing and Tie Pengfei. Design and Implementation of Energy-Saving Logistics Management System for Route Optimization[J].Wireless Communications and Mobile Computing, 2022.

[16] Qi liang SUN. Design and Implementation of Personnel Management Information System Based on SSM[C].2021.

指导教师意见

指导教师签字:

    年     月     日

核心算法代码分享如下:

# coding=utf-8
from bs4 import BeautifulSoup
import requests
import sys
import random
import pymysql
links = []
datas = []
hea = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'
}
urls =[]
 
# 打开数据库连接
db = pymysql.connect(host='127.0.0.1', user='root', password='123456', port=3396, db='news_recommendation_system')
# 使用cursor()方法获取操作游标
cursor = db.cursor()

def main():
    #reload(sys)
    #sys.setdefaultencoding("utf-8")
    #baseurl = 'XXXX'  # 要爬取的网页链接
    baseurl = 'XXXXXl'  # 要爬取的网页链接
    # deleteDate()
    # 1.爬取主网页获取各个链接
    getLink(baseurl)
    # 2.根据链接爬取内部信息并且保存数据到数据库
    getInformationAndSave()
    # 3.关闭数据库
    db.close()

def getInformationAndSave():
    for link in links:
        data = []
        url = "XXXXX" + link[1]
        cur_html = requests.get(url, headers=hea)
        cur_html.encoding = "utf8"
        soup = BeautifulSoup(cur_html.text, 'html.parser')
        # 获取时间
        title = soup.find('h1')
        title = title.text.strip()
        # 获取时间和来源
        tr = soup.find('div', class_='left-t').text.split()
        time = tr[0] + tr[1]
        recourse = tr[2]
        # 获取内容
        cont = soup.find('div', class_="left_zw")
        content = cont.text.strip()
        print(link[0] + "---" + title + "---" + time + "---" + recourse + "---" + url)
        saveDate(title,content,time,recourse,url)

def deleteDate():
    sql = "DELETE FROM news "
    try:
        # 执行SQL语句
        cursor.execute(sql)
        # 提交修改
        db.commit()
    except:
        # 发生错误时回滚
        db.rollback()

def saveDate(title,content,time,recourse,url):
    try:
        cursor.execute("INSERT INTO news(news_title, news_content, type_id, news_creatTime, news_recourse,news_link) VALUES ('%s', '%s', '%s', '%s', '%s' ,'%s')" % \
          (title, content, random.randint(1,8), time, recourse,url))
        db.commit()
        print("执行成功")
    except:
        db.rollback()
        print("执行失败")

def getLink(baseurl):
    html = requests.get(baseurl, headers=hea)
    html.encoding = 'utf8'
    soup = BeautifulSoup(html.text, 'html.parser')
    for item in soup.select('div.content_list > ul > li'):
        # 对不符合的数据进行清洗
        if (item.a == None):
            continue
        data = []
        type = item.div.text[1:3]  # 类型
        link = item.div.next_sibling.next_sibling.a['href']
        data.append(type)
        data.append(link)
        links.append(data)

if __name__ == '__main__':
    main()


Logo

更多推荐