一、前言
随着工业4.0和物联网(IoT)的快速发展,设备环境监测平台在各行各业中的应用越来越广泛。课题的产生基于对设备环境进行实时、便捷的监测和管理,以提高设备利用率,减少设备故障率,优化维修流程,降低运营成本,增强企业的竞争力。
尽管目前已经存在一些设备环境监测平台,但它们往往存在以下问题:
数据采集不准确:很多设备环境监测平台的数据采集受限于传感器的精度和稳定性,导致数据不准确。
数据处理能力不足:大量设备的运行数据产生巨大的数据处理压力,很多平台无法实时、便捷地处理这些数据。
数据分析程度不够:很多平台只能提供简单的数据统计和展示,无法对设备环境进行深入的分析和预测。
用户界面不友好:对于非技术用户来说,很多平台的用户界面复杂、不易操作。
本课题旨在开发一个全新的设备环境监测平台,能够准确、实时地监测设备环境,提供便捷的数据分析,以帮助企业更好地管理和维护设备。具体来说,本课题将实现以下目标:
提高数据采集的准确性和稳定性。
增强数据处理能力,实现数据的实时分析和存储。
深化数据分析能力,包括设备状态的预测和故障预警等。
提供更友好、更易用的用户界面。
本课题的研究意义在于提供一种更实时、便捷的设备环境监测方案,帮助企业提高设备利用率,减少设备故障率,优化维修流程,降低运营成本。同时,本课题的研究还将推动工业4.0和物联网(IoT)的发展,增进工业智能化和信息化。此外,本课题还将为其他相关领域的研究提供实践经验和理论依据。
二、开发环境
- 大数据技术:Hadoop、Spark、Hive
- 开发技术:Python、Django框架、Vue、Echarts、机器学习
- 软件工具:Pycharm、DataGrip、Anaconda、VM虚拟机
三、系统界面展示
- 基于大数据的设备环境监测平台界面展示:
四、部分代码设计
- 基于大数据的设备环境监测平台项目实战-代码参考:
class BTSearch:
def __init__(self, keyword, total_page_num, ck):
self.base_url = "http://sobt01.cc/"
self.keyword = keyword
self.total_page_num = total_page_num
self.root_url = f"{self.base_url}q/{self.keyword}.html"
self._gen_headers(ck)
self.data = {}
self.lock = threading.Lock()
def _gen_headers(self, ck):
row_headers = f"""Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: no-cache
Connection: keep-alive
Cookie: {ck}
Host: sobt01.cc
Pragma: no-cache
Referer: http://sobt01.cc/
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"""
self.headers = {k: v for row in row_headers.split("\n") for k, v in (row.strip().split(": "),)}
def parse_page(self, page):
params = {
"sort": "time",
"page": page
}
# 请求列表页面
try_count = 0
while True:
resp = requests.get(self.root_url, params=params, headers=self.headers)
if resp.status_code != 502:
break
try_count += 1
if try_count > 16:
logger.info(f"列表页:{self.root_url}重试15次失败,您可以手动尝试下载整页!")
break
time.sleep(0.3)
if "\"act\":\"challenge\"" in resp.text:
raise Exception("需要重新配置headers")
if resp.status_code >= 300:
logger.info(f"列表页错误。第{page}页,url:{resp.url},响应码:{resp.status_code}")
return None
res = self.get_detail_url(html=resp.text, page=page)
self.lock.acquire()
self.data.update(res)
self.lock.release()
def get_detail_url(self, html, page):
html_tree = etree.HTML(html)
search_items = html_tree.xpath("//div[@class='search-list col-md-8']/div[@class='search-item']")
res = {f"第{page}页": []}
# 解析详情页的标签
for one_item in search_items:
size_span = one_item.find("./div[@class='item-bar']/span[3]")
size = size_span.find("./b")
if not size.get("class"):
if float(size.text[0:-3]) < 500:
logger.info(f"{float(size.text[0:-3])}太小了")
continue
jump_to_element = one_item.find("./div[@class='item-title']/h3/a")
detail_uri = jump_to_element.get("href")
detail_page = self.base_url + detail_uri
href = self.parse_detail(url=detail_page, page=page)
res[f"第{page}页"].append(href)
return res
def parse_detail(self, url, page):
try_count = 0
while True:
resp = requests.get(url, headers=self.headers)
if resp.status_code != 502:
break
try_count += 1
if try_count > 9:
logger.info(f"详情页:{url}重试8次失败,您可以手动尝试下载")
break
time.sleep(0.3)
# 解析详情页
if resp.status_code < 300:
html_tree = etree.HTML(resp.text)
title = html_tree.xpath("//div[@id='wall']/h1/text()")[0]
target_magnet_link = html_tree.xpath("//div[@id='wall']//input/@value")[0]
logger.info(f"page -> [{page}], href -> [{target_magnet_link}]")
return {
"title": title,
"href": target_magnet_link
}
else:
logger.error(f"not found source")
return None
def run(self):
tp = ThreadPoolExecutor(10)
try:
for page in range(1, self.total_page_num + 1):
tp.submit(self.parse_page, page)
except Exception as e:
logger.error(e)
logger.error(traceback.print_exc())
finally:
tp.shutdown(wait=True)
self.save_data()
def save_data(self):
cur_dir = os.path.dirname(os.path.abspath(__name__))
res_path = os.path.join(cur_dir, "data")
if not os.path.exists(res_path):
os.makedirs(res_path)
filename = f"data_{time.strftime('%Y%m%d%H%M%S', time.localtime())}.json"
file_path = os.path.join(res_path, filename)
with open(file_path, "w", encoding="utf-8")as f:
json.dump(self.data, f, indent=4, ensure_ascii=False)
if __name__ == '__main__':
ck = "PHPSESSID=1735hrtkd0gnds3an9bgmk00bh; test=2e1e17ad6a1688993418"
keyword = "流浪地球"
total_page_num = 5
bt = BTSearch(
keyword=keyword,
total_page_num=total_page_num,
ck=ck,
)
bt.run()
五、论文参考
- 计算机毕业设计选题推荐-基于大数据的设备环境监测平台-论文参考:
六、系统视频
基于大数据的设备环境监测平台-项目视频:
大数据毕业设计选题推荐-设备环境监测平台-Hadoop
结语
大数据毕业设计选题推荐-设备环境监测平台-Hadoop-Spark-Hive
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我