本科毕业设计——基于云存储的物联网安全数据的爬取

本科毕设已经过去一年多,由于考研的原因,当时没有把做毕设的过程记录下来,这篇文章主要是对自己本科毕设的一个回顾和总结。


题目:基于云存储的物联网安全数据的爬取

当时看到题目,我就把毕设该做的工作分为了两个部分。

  • 设计爬虫,爬取网站上的数据。

 在还没有实现云存储的时候,暂时先将数据存储到非关系型数据库MongoDB上,至于为什么存储到非关系型数据库,后面再介绍。

  • 将数据存储到Hadoop平台上,实现云存储。

当设计好爬虫,能爬取到网站上的数据时,搭建Hadoop环境,将爬取到的数据存储到Hadoop中的非关系型数据库HBase中。因为本科学习知识和毕设时间有限,故暂定将数据存储到HBase中,暂先不对数据进行处理,但是存储到Hadoop中的数据将会被另一个同学拿来做数据的可视化。


设计爬虫

本爬虫主要使用Scrapy框架和Selenium机制来进行开发。主要是爬取CNVD网站的信息,信息格式如下:

 看到这个格式就知道为什么用非关系型数据库存储了,这个格式会让我们想到Python中的字典格式,而非关系型数据库MongoDB中的存储格式就是字典格式,而且这种格式的可扩展性较大,所以将爬取到的数据存储到非关系型数据库中是较佳的选择。

在此就不详细介绍爬虫的具体实现,我给出设计爬虫的功能框架图参考:

暂存到MongoDB中的数据部分结果如下:

设计爬虫过程中遇到的一些关键问题及相应的处理如下:

  • Scrapy框架的数据提取能力较弱,故加入Selenium机制来增强数据的提取能力。
  • 爬虫不可避免的就是处理反爬。此网站的第一个防爬机制就是:网站检测到同一个IP频繁的访问它十次,它就会在一定时间内禁止这个IP访问网站;对此就是控制爬虫的速度,让爬虫的速度放慢。第二个防爬机制就是网页加载需要时间,这样爬虫就很容易碰到空白内容而报错并停止运行;所以需要在爬虫提取数据那里加延迟,让爬虫等待网页的加载。 

云存储的实现  

  •  搭建Hadoop环境。

这部分就不做详细介绍,网上能找到很多搭建环境的教程,我当时主要是参考了林子雨的那本大数据教程搭建的。我主要是在windows系统中装了个虚拟机,然后在虚拟机中装了Ubuntu系统,然后在系统中搭建的伪分布式环境。

  • 存储数据到HBase中。

 需要注意的是HBase需要下载安装并配置环境,然后设计表并把数据存储到数据库中。下图是本课题设计的表结构:

 HBase创建好表后,使用Python中的happybase库实现与HBase的连接:

import happybase
conn = happybase.Connection(host="192.168.43.163",port=9090)
table = conn.table('LouDong')

 将爬取到的数据存储到数据库中:

for key,value in item.items():
    table.put('%s' % item['url'],{"info:'%s'" % key:value})

下图是抓取结果展示:

之所以是图片上的这种结果,是因为存储到HBase里的数据全部是以十六进制显示的,可以安装管理HBase的软件,在里面可以直观的查看到存储的数据。


总结

 以上就是本科毕设所做的大概事情,可能看起来工作量不大,但是由于从没接触过爬虫和Hadoop,导致做的过程中出现了很多问题,在老师和同学的帮助下,一点点解决了这些问题。所以每次回顾自己的毕设,都有一种成就感,也同时激励现在的自己,遇到困难也不要怕,只要有解决问题的心,最终就一定会解决掉问题。

猜你喜欢

转载自blog.csdn.net/Exception_3212536934/article/details/108962000