电影评论网络数据抓取与分析系统设计与实现

数据库:mysql

是否包含论文:不包含

框架结构:springmvc

毕业设计项目导入教程

电影评论网络数据抓取与分析系统设计与实现视频1

右下角可以放大全屏

关于网络爬虫的研究与设计从上世纪九十年代就开始了,到目前为止爬虫技术已经趋见成熟,网络爬虫是搜索引擎的重要组成部分。网络上比较著名的开源爬虫包括Nutch,Larbin,Heritrix。网络爬虫最重要的是网页搜索策略(广度优先和最佳度优先)和网页分析策略(基于网络拓扑的分析算法和基于网页内容的网页分析算法)。

国内外流行的爬虫技术相当多,很多人喜欢基于Python的,也有人喜欢用C#,很多人由于系统集成开发和跨平台的需要倾向于java,因为我对Java比较了解,所以我比较喜欢用Java语言去开发。

就原理来说,爬虫组件都是差不多的,无头浏览器,最能够说明爬虫的特性,它们被设计创造出来,大部分情况是用于自动化测试的。

基于socket的httpclient功能简单,性能强大,特别是在高并发的情况下,而被大家所青睐,特别是搜索引擎中,如果抓取静态页面,httpclient非常适合。基于socket的httpclient功能简单,性能强大,特别是在高并发的情况下,而被大家所青睐,特别是搜索引擎中,如果抓取静态页面,httpclient非常适合。

当遇到ajax加载的信息,就需要javascript效果渲染的时候,httpclient就不行了,htmlunit是基于httpclient加入Rhino引擎实现js渲染的无头浏览器,当然包含了httpclient的特性,然而,由于内存泄露的问题,高并发的状态下,并不能很稳定的工作,内存消耗随着程序的运行而不断增大,直到达到jvm分配的上限而崩溃。很多时候,你只能做个权衡,每个webclient使用若干次后就把它回收,然后重新启动一个,这非常影响性能。Rhino对于javascript的支持并不好,实际使用中,会发现各种Exception,很多时候会导致无法渲染出想要的结果,这个htmlunit的又一大缺陷。随着版本的更新,能够渐次解决一些问题,但是好的程序员,还是应该自己读源码来尝试解决问题。

Phantomjs相比于htmlunit,对于js的支持更接近真实的浏览器,但是并发性能差,通过java的exec调用系统命令来启动,更加降低了性能。

此外主流的浏览器都提供了相应的抓取支持,selenium可谓是一个集大成者,包含了上述的所有组件,以WebDriver的形式,适配各种爬虫组件,你可以用它操控浏览器自动抓取,当然,并发和性能的问题依然存在。

爬虫开发的主要问题是性能和反封锁。很多时候,采用高并发高频率抓取数据是可行的,前提是目标站点没有采用任何反爬措施(访问频率限制、防火墙、验证码……);更多时候,有价值的信息,一定伴随着严格的反爬措施,一旦ip被封,什么组件都没戏了。你不得不维护一个代理IP池来解决这个问题,当然,这也带来了代理ip稳定性和速度的问题,这些问题都是无法回避的问题,我们需要针对具体的情况,采用对应的措施,以最大限度的完成爬虫爬取任务。

目前,爬虫的需求呈爆炸式增长的趋势,这是当前各种互联网创新和大数据时代的新常态。火车和八爪鱼等团队看到了这一点,并率先开发了相对完备的爬虫产品,很多用户都在使用,但是更多的用户希望直接把爬虫抓取任务外包出去,因为他们不懂技术,工具的使用需要逾越技术的鸿沟,大部分用户并没有这个逾越鸿沟的打算。我相信技术会越来越发达,爬虫需求者和爬虫开发者将会有更加通畅的交流渠道。

评论