基于爬虫技术的网站页面变动检测与分析毕业论文
2021-11-08 21:28:15
摘 要
随着互联网的迅速发展,网络上建立起了各种类型的网站。对用户而言,有价值或者无价值的数据呈爆炸式增长,如何从海量数据中获取有价值的部分数据成了大家越来越关注的话题。
本文借助了python的Scrapy、Django、websocket实现了对财经网站页面变动的定时检测分析,定时抓取更新的财经相关数据进行清洗抽取,并向目标客户发起更新消息推送,所得的数据可以用来进行监控热点时事和分析社会舆论走向。
本文主要研究如何进行对网站进行变动检测,结合使用爬虫技术和定时任务技术实现对网站页面的内容更新进行检测和分析。
研究结果表明:结合使用爬虫技术和定时任务技术可以实现对网站页面的变动检测和分析。
关键词:网络爬虫;网站变动检测;自然语言处理;消息推送
Abstract
With the rapid development of the Internet, various types of websites have been established on the Internet. For users, valuable or worthless data is exploding. How to obtain valuable part of data from massive data has become a topic of increasing concern.
This article uses Python's Scrapy, Django, websocket to realize the regular detection and analysis of the financial website page movement, regularly grab the updated financial related data for cleaning and replacement, and initiate an update message push to the target customer, the obtained data can be monitored Focus on current affairs and analyze the trend of public opinion.
This article mainly studies how to carry out the change detection of the website, and uses the crawler technology and the scheduled task technology to realize the detection and analysis of the content update of the website page.
Research indicates : Combined with the crawler technology and timing task technology, it can realize the detection and analysis of the changes of the website pages.
Key Words:Web Crawler;Website change detection;Natural language processing;Message push.
目录
第1章 绪论 4
1.1 课题研究的背景、目的和意义 4
1.1.1 课题背景 4
1.1.2 目的和意义 4
1.2 国内外研究现状 4
1.2.1 If-Modified-Since 状态码 4
1.2.2 RSS订阅 5
1.2.3 通过hash数字签名 5
1.3 课题研究内容 5
1.4 预期目标 5
第2章 搭建爬虫 6
2.1 爬虫基础框架 6
2.1.1 网站结构分析 7
2.1.2 创建爬虫项目 8
2.1.3 抓取各栏目新闻 9
2.1.4 抓取股票行情数据 12
2.3 针对反爬机制 15
2.2.1 随机更换user-agent 15
2.2.2 使用代理IP 16
2.3 部署爬虫 17
第3章 数据分析 19
3.1 关键词抽取 19
3.2 文本摘要提取 20
3.1 情感极性分析 23
第4章 系统开发 24
4.1 系统后端 24
4.1.1 功能需求分析 24
4.1.2 开发环境准备 25
4.1.3 数据库设计 25
4.1.4 网站用户功能 28
4.1.5 数据API设计 30
4.1.6 定时任务 34
4.1.7 消息推送 36
4.1.8 数据分析 37
4.2 前端页面 39
4.2.1 用户web页面 39
4.2.2 管理后台界面 42
4.2.3 数据可视化大屏 44
第5章 结论 45
参考文献 46
致 谢 48
第1章 绪论
本人毕业设计的选题是基于爬虫技术的网站页面变动检测与分析。
1.1 课题研究的背景、目的和意义
1.1.1 课题背景
项目组需要根据互联网上的新闻媒体内容对各个企业进行构建关系网络并进行舆情监控分析。对企业进行构建关系网络需要大量的热点新闻和资讯数据,特此利用爬虫技术对相关网站进行定时监控检测页面变动,并分析抓取出更新的新闻和资讯信息数据以供构建关系网络。
1.1.2 目的和意义
课题的目的是定时抓取网站数据,通过对比先后爬取到的网站页面索引数据,捕获网页的变更信息及网页的特征信息并进行推送更新变动消息。
爬虫技术在现实生活中应用广泛。1、大数据下经济发展监测分析,经济发展数据的获取,是分析工作的关键,需要从互联网公开数据中获取与经济运行相关的更多数据,比如上市公司企业财务报表和运营状况数据等[1]。2、对建设网站的企业,页面数据变动监测可以对站点的bug和数据进行分析,对网站功能进行模拟使用对不能正常工作的链接发送警报邮件到开发人员邮箱,降低服务正式上线后出故障的概率。3、搜索引擎是一个大型爬虫程序,抓取发布到网络上的站点信息,对站点按照一定规则排序,为用户提供网络信息搜索服务,并将搜索相关内容展示给用户浏览。
1.2 国内外研究现状
目前国内外对网站页面变化检测主要有以下几个策略:
1.2.1 If-Modified-Since 状态码
If-Modified-Since是HTTP header的一个部分,可以用于web缓存,若HTTP响应有一个Last-Modified头,缓存可以使用If-Modified-Since头来发出一个条件请求,来查看它是否已经改变。当第二次访问网站的某个页面,如果网页更新了,服务器会返回一个200的http状态码,如果网页没有更新,则返回一个304的http状态码[2]。这种策略适用于静态页面的更新。
1.2.2 RSS订阅
RSS(简易信息聚合),一种基于XML的内容封装和投送协议,用来分发和汇总网页数据的XML文件,通过发布RSS文件,网站数据可被其它站点直接引用,可以用来同步网页数据,这种思路问题是并不是所有网站都提供RSS源的,虽说有万能的rsshub,但是rsshub也是需要开发人员自己去维护的[3]。
1.2.3 通过hash数字签名
对抓取的网页数据放入缓冲区中,利用算法生成hash值持久化到数据库中,之后每次抓取到网页时先计算hash值与上一次的对比,根据两个值的相差大小可以判断网页内容的更新比例。通常按照汉明距离来计算,三个以内即可判断未更新[4]。可以采用simhash算法。
1.3 课题研究内容
课题研究的内容主要有以下几个方面:爬虫技术,包括多线程爬虫和反爬机制;web网站页面结构的分析与处理,HTML DOM树节点操作;文本数据清洗和抽取;异步定时任务;消息推送。
1.4 预期目标
搭建一个web系统,可以在管理后台页面手动管理监测网站的定时任务,该任务启动对目标网站监测的爬虫,通过对比先后抓取到的网站索引数据,捕获网页的变更信息及网页的特征信息并保存到数据库中,使用消息队列对目标网站的更新内容进行推送。
第2章 搭建爬虫
2.1 爬虫基础框架
在系统中采用Scrapy作为爬虫监控目标网站基础框架。Scrapy 是用 Python 实现的一个抓取网站数据的分布式应用框架[15]。Scrapy的框架结构和各个模块的运行流程如下:
图2.1 Scrapy框架
- Scrapy Engine: 处理各个模块之间的数据流动,是整个框架的引擎。
- Scheduler: 处理引擎传递来的Request,按照设定的规则排序添加到队列中,当引擎需要时,返回给引擎。
- Downloader:处理引擎传递来的Request,下载这些网络请求然后将得到的Responses数据返回给引擎。
- Item Pipeline:负责处理Spider中回调的Item,并进行进行后期处理的地方。
- Middlewares:中间件,可以在中间件中添加额外的自定义扩展功能的模块。
- Spider:它负责处理所有Responses,从中分析抽取出数据,获取Item需要的数据回调给Pipeline,并将需要跟进的URL提交给引擎,再次进入Scheduler[5]。
2.1.1 网站结构分析