基于python关系网络数据化的实现

摘 要
随着现代社会互联网的快速发展,网民不断增多,网络给我们的现代生活带来了很多方便之处,但是,它在发挥对我们有利的用处的同时,也带来了存在着一些不好的地方。例如,网络加速了人们对于一些事件的讨论的传 播,容易造成一种舆论倾向。因此,针对热点话题的数据采集和分析可以更好地了解网络热点走向,并加以控制。
本文主要从整个设计的技术要求、系统设计、系统实现展开,围绕数据采集、数据分析及数据可视化这三个方面来进行阐述。本设计利用python语言,通过scrapy框架来抓取数据,数据库采用的是mysql,前端框架采用bootstrap和jquery,后端框架采用flask,可视化是利用的echarts工具,进行前后端交互,分析热度与内容的关系,提取文本信息进行分类,来实现对网络状况的分析。同时,也能够同步观察到数据的实时情况。通过本设计,可以更有效的了解到网络的近况。

关键词:数据分析,Flask,Echarts,Mysql

第三章 系统设计

3.1 系统的需求分析
整个设计主要分为爬虫模块、数据分析模块、数据可视化模块三个主要部分,下面是对于各个功能模块的需求分析:
3.1.1 爬虫模块
爬虫模块的功能是搜集所需要的网络热点数据,将其采集下来,主要是对微博、百度、知乎热榜数据的采集。采集的数据包括热榜的排名、内容和相关的搜索人数。在获取完数据之后,将数据存储到MySql中,方便之后的使用。
3.1.2 数据分析模块
数据分析模块的功能是对已经保存在数据库中的数据进行观察、筛选和分析,主要分为数据清洗和数据分析这两个部分。数据清洗在此设计中的需求就是对数据的缺失值不全和删除错误的数据。数据分析是对获取到的数据通过热度与排名的关系来观察趋势,对数据中的内容进行分词、提取关键词来进行分析,分析网络关注最多的事情。此外,还可以利用文本特征来进行词云分析、高频主题词的统计,预测出未来关注走向。
3.1.3 数据可视化模块
数据可视化模块是对数据进行可视化,并通过web展示出来。将数据利用数据分析得出想要的类型,再调用Echarts通过图表的方式展示出来,更清晰明了。Web是利用Bootstrap+Jquery前端框架和Flask后端框架进行搭建的,实现数据可视化、前后端数据交互以及联合数据库进行实时数据的更新。
3.2 系统的框架设计
爬虫模块主要还是利用Scrapy框架,以xpath解析的方法对所需要爬取的网页进行顺序爬取,一个个遍历和比较相关数据的网页节点,分别构造出微博爬虫、百度爬虫、知乎爬虫。这三个爬虫都是爬取这三个网页的热榜,包括热榜的数据的排名名次、内容和搜索人数,也就是热度。
数据清洗模块主要是用pandas里面的函数来处理缺失值和重复值。
数据分析模块通过采集到的数据的热度与排名进行多样分析,提取热榜内容数据,从关键词、热度等进行数据分析。
数据可视化模块通过Echarts使分析结果以图表的形式在web上展现出来,更清晰明了,能够更好的分析数据的特征以及未来发展趋势。

在这里插入图片描述

图3-1设计结构图
3.3 爬虫模块设计
3.3.1 Scrapy框架设计
Scrapy框架本设计只用了Spider、Item Pipeline、settings部分。Spider部分有微博、百度、知乎爬虫的设计,主要是利用xpath的方法通过遍历和比较来获取这些网站热榜的数据。图3-2为微博爬虫爬取数据获取流程。

在这里插入图片描述

图3-2 scrapy爬虫爬取数据流程图
爬虫部分,首先是要设置所要请求网页的url,运行爬虫程序,对目标网页发送一个请求,是模仿浏览器这样的一个操作。在程序获取到目标网页传递过来的网页源代码的时候,请求数据的功能就完成。然后,通过xpath方法,找到所要获取页面的大的框架的节点,然后再找到排名、内容、热度的网页节点,在进行程序的编写。

第四章 系统功能模块实现

4.1 爬虫模块
爬虫模块的主要功能就是对需要采集的数据进行采集。本设计主要是对热门社交软件的热榜的爬取和它们的实时数据的爬取,这里采用了scrapy框架对它们数据的采集以及xpath方法和正则表达式对网页内容进行解析,根据不同页面的复杂程度和需求,选择适合它们的方法来使用。

4.1.1 scrapy模块
Scrapy框架可以同时运行它的框架下的多个爬虫,这个方法十分简洁快捷。多个爬虫伪代码如下:
class baiduSpider(scrapy.Spider):
name = “baidu”
allowed_domains = [‘top.baidu.com’]
start_urls = [‘http://top.baidu.com/buzz?b=1&c=513&fr=topbuzz_b341_c513’] def parse(self, response, **kwargs):
item = BaiduItem()
main_list = response.xpath(‘//div[@class=“main”]’) print(main_list)
for main in main_list:
item[‘rank’] = response.xpath(‘.//td[@class=“first”]/span/text()’).extract_first() item[‘content’] = response.xpath(‘.//td[@class=“keyword”]/a/text()’).extract_first() item[‘hot’] = response.xpath(‘.//td[@class=“last”]/span/text()’).extract_first()
yield item
//使用xpath来解析网页代码Item部分代码如下:
class WeiboItem(scrapy.Item):
rank = scrapy.Field() content = scrapy.Field() hot = scrapy.Field() pass Settings伪代码如下:
USER_AGENT = ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome
/78.0.3904.108 Safari/537.36’ ROBOTSTXT_OBEY = False ITEM_PIPELINES = {
‘data.pipelines.dataPipeline’: 300,
}
在这里插入图片描述

图4-1 scrapy爬虫数据获取情况
4.1.2 实时数据模块
实时数据主要是抓取实时更新的数据,由于页面信息每一分钟更新一次,所以设置的爬虫也将每一分钟爬取一次。部分代码如下:
def main():
db=pymysql.connect(host=‘nj-cynosdbmysql-grp-2qp2bdhb.sql.tencentcdb.com’, port=22639, user=‘aaa76857’, passwd=‘yiwang1029.’, db=‘data’, charset=‘utf8’)
cursor = db.cursor()#取游标
sql = “insert into current_weibo VALUES (‘%s’,‘%s’,‘%s’,‘%s’)”
//连接数据库
r = requests.get(url=‘https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6’, timeout=10) print(r.status_code) # 获取返回状态
r.encoding=r.apparent_encoding demo = r.text
soup = BeautifulSoup(demo, “lxml”) t = 1
result = []
time_stamp = time.strftime(‘%Y/%m/%d %H:%M’, time.localtime(time.time())) # 时间戳for item in soup.find_all(‘tr’, class_=‘’):
try:# 去掉第一条信息if (t == 1):
t = 0 continue

print(link(‘td’))

rank = item.select(“td”)[0] # 热 搜 排 名 content = item.select(“td”)[1].select(“a”)[0]
hot = item.select(“td”)[1].select(“span”)[0]
result.append([rank.string, content.string, hot.string, time_stamp]) except IndexError:
pass
for item in result:
rank = str(item[0]) content = str(item[1]) hot = str(item[2])
current_time = str(item[3])
print(rank, content, hot, current_time)
cursor.execute(sql % (rank, content, hot, current_time))
//插入数据db.commit() cursor.close()
db.close() main()
schedule.every(1).minutes.do(main)

检查部署的情况,如果任务准备就绪,就开始执行任务while True:

time.sleep(2) schedule.run_pending()

在这里插入图片描述

图4-2 实时数据获取情况

第五章 结论与展望

5.1 论文总结
本次的设计与开发是基于Python的基础上实现了关于对网络热点的分析和可视化,实现了对网络热点的一个把握,并能够即时的观察和推断实时的数据情况。这个设计从整体上主要以数据爬取模块、数据分析模块和数据可视化模块这三个模块为主,来展开进行实施。经过数据爬取模块的操作,可以对想要获取的数据和不停更新的数据进行采集,并将采集下来的数据存储到数据库中,再运用一些与数据分析相关的方法对数据进行分析,之后利用Echarts将数据以图表的形式表现出来,最后再使用Flask框架构造Web来实现功能。
通过查阅资料和实践操作,我掌握了关于数据分析的理论知识与使用方法、Scrapy框架和Flask框架的相关基本知识与使用技巧、对MySQL语言更为熟练的使用,通过实践不断加深对知识的理解和技术的提升。
在整个设计过程中,主要完成了以下任务:
1.根据设计内容,搜集相关知识,对它进行需求分析、框架设计。
2.根据需求,确定目标和分析的方向,进行对数据的爬取。
3.根据爬取的数据的相关性,从而确定数据分析所运用到的方法。 4.了解Flask、Echarts、Bootstrap等相关技术,通过Bootstrap搭建前端框架、
Flask搭建后端框架、Echarts对图表进行渲染,来实现前后端数据的交互和展示。
同时,在编写和实现过程中,我也遇到了一些困难,但最后也得以解决。例如,运用lxml包下的etree包来对网页进行解析和爬取数据,但是安装了相关依赖也依旧报错。通过查阅资料,发现是由于与Python版本不匹配不支持,最后换用xpath方法。还有将数据存储到MySQL中,由于引用语句和插入语句语法的部分重复,导致一直报错,诸如此类还有很多。但正因为有这些错误存在,让我对一些知识理解更透彻。

文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值