基于网络爬虫技术的网络新闻分析(四)

news2024/11/17 6:47:49

目录

4.2 系统异常处理

4.2.1 爬虫异常总体概况

4.2.2 爬虫访问网页被拒绝

5 软件测试

5.1 白盒测试

5.1.1 爬虫系统测试结果

5.1.2 中文分词系统测试结果

5.1.3 中文文章相似度匹配系统测试结果

5.1.4 相似新闻趋势展示系统测试结果

5.2 黑盒测试

5.2.1 爬虫系统测试结果

5.2.2 中文文章相似度匹配系统测试结果

5.2.3 相似新闻趋势展示系统测试结果

参考文献


前面内容请移步

基于网络爬虫技术的网络新闻分析(三)

资源下载+毕业论文+答辩

基于网络爬虫技术的网络新闻分析.rar

4.2 系统异常处理

        系统在运行过程中因为复杂的运行环境,可能会产生种种异常问题。

4.2.1 爬虫异常总体概况

        爬虫异常总体概况就是能让爬虫的维护人员能及时了解爬虫的整体运行状态,例如当前爬虫是否处于阻塞状态,阻塞的原因是什么,目前已经爬取了多少内容,还有多少内容有待爬取?当前爬虫正在爬取哪个页面?爬虫在进行数据存储的过程中有哪些异常?通过上面的数据可以得到下列结论: 

        爬虫程序的健壮性。观察爬虫爬取的网页文档数据,通过分析就能够得出爬虫在网页文档数据的时候出现的各种异常问题,便于爬虫系统代码的优化。

        爬虫程序的爬取效率。通过log系统记录爬虫爬取网页时打印的Log,经过一些统计整合,可以得出爬虫的数据采集能力究竟有多强,如果采集速度太慢,可以进行一些多线程方面的优化处理,同时也要检查是否是代码某处出的BUG。

爬虫对客体网站的影响。如果发现爬虫运行一段时间后,无法再从某个网站中采集到网页文档数据,这时候就算考虑下是否是爬虫爬取网页文档数据过于频繁而被网站管理员封锁。

4.2.2 爬虫访问网页被拒绝

        爬虫大量爬取网站时,会对网站资源占用严重,所以很多网站加入了反爬虫机制,大量爬取网站数据时,会出现Access Denied一类的错误,网页服务器直接拒绝了访问,这时候爬虫就得需要能伪装的像一个真正的浏览器一样,有如下方法:

(1)伪装User-Agent

        User-Agent标明了浏览器的类型,以便Web网站服务器能识别不同类型的浏览器。为什么要识别不同类型的浏览器呢?现在主流的优秀浏览器有windows10的Edge浏览器、微软的IE系列浏览器、谷歌的Chrome浏览器、Mozilla的FireFox浏览器,还有来自挪威的Opera浏览器,这些浏览器五花八门,分别出自各自的厂家,所以面对同样的html元素,他们的解析效果有可能是非常不同的,甚至会出现无法解析一些Html元素的情况,正式因为如此,所以Web网站服务器要判断不同的浏览器以便提供不同支持方案(例如CSS中针对不同的浏览器可能需要不同的标注)。

        所以现在绝大部分的爬虫为了能够及时获取网站的数据,通常会设置一个某种浏览器的User-Agent以此来“欺骗”网站,告诉Web网站服务器自己是某一种浏览器,然后网站Web服务器才会返回真实的网页数据,一般比较常见几个浏览器的User-Agent如下:

        Chrome的User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36

        火狐的User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0

IE的User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko                   

HttpClient设置User Agent的方法如下:

HttpGet getMethod = new HttpGet("URL");

getMethod.setHeader("User-Agent", "user agent内容");

(2)需要登录后才能访问网页数据

        虽然绝大部分网站不登陆就能访问各个页面的内容,随着各个研究机构对互联网数据的需求越来越多的情况下,各种各样的爬虫随之诞生,但是一部分爬虫会无节制的爬取网站,大大地消耗了网站的带宽,导致正常的用户都无法访问网站,所以现在的绝大部分网站都相应推出了一些防护“恶意爬虫”的策略,例如网站一旦检测到某个IP的访问量有异常,就会要求这个IP访问的时候必须登录后才能访问。不过这样也有解决方法,可以直接在该IP所在主机上用浏览器登录,登录成功之后,如果浏览器是Chrome或者firefox那么可以直接查看浏览器的cookie,用HttpClient设置cookie即可访问即可。不过还有一些检测机制特别严格的网站,登录网站的时候必须填写随机验证码,这类网站的爬取难度可就大了,需要能识别网站随机扭曲的验证码,这些问题在本文不做讨论。

(3)使用代理IP访问

        如果网站服务器维护人员用某段时间内某IP的访问次数来判定爬虫,然后将这些爬虫的IP都封掉的话,以上伪装就失效了。为了解决爬虫的IP被相关网站封停,仔细一想,如果爬虫能模拟出一批用户来访问该网站不就能解决这个问题吗?具体应该如何模拟呢?首先需要模拟出一个一个分散而又独立的用户,这就需要随机而又分散到全国各地的IP代理,爬虫运行的时候从这些IP代理中随机选取一部分IP作为代理使用,这样就能比较完美地解决单IP高频率高流量访问网站的问题了。

        拥有了这些IP代理之后,应该如何去管理这些代理IP呢?这里可以做一个类似于数据库连接池的东西,当然这里存放的不是数据库连接,而是一个一个的代理IP,然后指定相关的代理IP分配策略。代理IP池做好之后,要做一个负载均衡,每次轮流使用代理IP池中可以正常使用的IP做循环访问,这样单一IP对网页服务器会迅速下降,非常明显。

5 软件测试

        软件测试是软件系统开发的一系列流程与活动中的最后一个部分也是最重要的一个部分,是一种为了能保证软件的逻辑上的严密性、严谨性、高可用性的解决方案。通过对软件的逻辑分支的校验,来确定软件是否能达到需求分析中的要求,并且在最大程度上能保证软件不会带来其他的BUG。只有通过了软件测试,整个软件工程的最终产物才能交付给用户使用。

5.1 白盒测试

        白盒测试是一种基于软件逻辑结构设计的测试,在整个测试过程中,测试的参与者是完全熟知整个系统的逻辑分支的。白盒测试的盒子是指被测试的软件系统,白盒指的是程序结构与逻辑代码是已知的,非常清楚盒子内部的逻辑结构以及运行逻辑的。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径都进行相关测试。“白盒测试”会争取能够测试完软件系统中所有的可能的逻辑路径。使用白盒测试的方式时,一定要先画出软件所有的逻辑顺序结构与设计,然后再分别设计出合适而又全面的测试用例,最终完成白盒测试。

5.1.1 爬虫系统测试结果

        因为爬虫系统逻辑设计相对来说是比较简单的,不涉及到基本路径法,因为整个正序只需要定时运行就行,不像其他软件系统那样,有较深的用户需求根基,需要相关人员配合使用。本次开发的爬虫系统是全自动的,所以百合测试结果与黑盒测试结果一致。

        下图为爬虫系统的百合测试结果截图,测试方法即定时运行爬虫即可,下图中的条目为爬虫此次执行所爬取到结果中的一部分,爬取结果如图5-1所示。

图5-1 爬虫爬取结果

5.1.2 中文分词系统测试结果

        中文分词系统测试也比较简单,没有复杂的业务逻辑,结果基本呈线程顺序,且执行路径唯一,下图为中文分词系统的白盒测试结果,首先是测试的语料的截图,如图5-2所示。

图5-2 中文分词原文

        最终的分词结果如下,目前想要提高分词结果非常困难,需要加大词库的准确性,白盒测试结果如图5-3所示:

图5-3 中文分词结果

5.1.3 中文文章相似度匹配系统测试结果

        中文文章相似度计算方法采用了余弦定理计算两篇文章所对应的汉语词语的词频向量的夹角的余弦值,在经过大量的试验后发现其准确率还是非常非常高的,测试结果如图5-4所示。

图5-4 余弦定理相似度匹配

        可以看出,“国家专项计划引苏鄂家长担忧教育部回应”这篇新闻与“向中西部调剂生源致高考减招数万?湖北江苏连夜回应”两条新闻均是有关高考的,完美匹配到了一起,其次不排除有些极端的情况,导致匹配结果不正确,这个也会继续研究,提高准确率。


5.1.4 相似新闻趋势展示系统测试结果

        相似新闻的展示采用了JfreeChart作为白盒测试的测试对象,测试结果如下图所示,精确显示了每一条新闻的关注度走势,如图5-5所示。

图5-5  JfreeChart测试图


5.2 黑盒测试

        黑盒测试与白盒测试恰好相反,从名字就能看出,一黑一白,白盒测试者熟悉盒子中的内容,而黑盒测试者是完全不知道盒子中的内容的。黑盒测试主要是面向程序的功能实现而进行的测试,例如检验程序是否具有某一功能,而完全不必关心程序的逻辑设计。也就是说,整个黑盒测试关注的是软件系统的功能完整性,而不考虑程序逻辑上的BUG等问题。

5.2.1 爬虫系统测试结果

        上面已经提到,本爬虫系统逻辑较为简单,白盒测试结果与黑盒测试结果一致,结果如图5-6所示。

图5-6 爬虫系统黑盒测试


5.2.2 中文文章相似度匹配系统测试结果

        总体来说,黑盒测试的结果也是比较令人满意的,同样,瑕疵还是有的,这也是编程的挑战与乐趣所在之处,黑盒测试结果如图5-7所示。

图5-7 中文匹配黑盒测试

5.2.3 相似新闻趋势展示系统测试结果

        黑盒测试相似新闻趋势展示系统测试了Echarts的效果,以便能跟白盒测试JfreeChart区别开来,测试结果如图5-8所示。

图5-8 黑盒测试新闻排行

        点击上面的相关新闻会出现单个新闻的趋势发展图,如图5-9所示。

图5-9 echarts黑盒测试

 

参考文献

  1. 于娟,刘强. 主题网络爬虫研究综述[J]. 计算机工程与科学, 2015, 37(02):231-237.
  2. 张红云. 基于页面分析的主题网络爬虫的研究[D]. 武汉理工大学, 2010.
  3. 张莹. 面向动态页面的网络爬虫系统的设计与实现[D]. 南开大学, 2012.
  4. 张晓雷. 面向Web挖掘的主题网络爬虫的研究与实现[D]. 西安电子科技大学, 2012.
  5. 奉国和,郑伟. 国内中文自动分词技术研究综述[J]. 图书情报工作, 2011, 55(2):41-45.
  6. 许智宏,张月梅,王一. 一种改进的中文分词在主题搜索中的应用[J]. 郑州大学学报, 2014(5):44-48.
  7. 欧振猛,余顺争. 中文分词算法在搜索引擎应用中的研究[J]. 计算机工程与应用, 2000, 36(08):80-82.
  8. Batsakis.S, Petrakis E G M, Milios E. Improving the performance of focused web crawlers[J]. Data & knowledge engineering, 2009, 68(10):1001-1013.
  9. Pant.G, Menczer F. MySpiders:Evolve Your Own Intelligent Web Crawlers[J]. Autonomous agents and multi-agent systems, 2002, 5(2):221-229.
  10. Ahmadi-Abkenari F, Ali S. A Clickstream-based Focused Trend Parallel Web Crawler[J]. International Journal of Computer Applications, 2010, 9(5):24-28.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1684284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【每日刷题】Day47

【每日刷题】Day47 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 112. 路径总和 - 力扣(LeetCode) 2. 2404. 出现最频繁的偶数元素 - 力扣&am…

PPT图片高清导出

PPT制作的图片高清导出 适用于windows系统 案例 例如想要导出下面这张图片 1. 保存为emf文件 2. 将emf文件导入画图软件 导入方法直接将emf文件拖进去就行,可以看到图片成功高清显示(可以通过放缩检查是否模糊)。 3. 修改分辨率 点击上方…

Redis协议的请求和响应有哪些“套路”可循?no.18

Redis 协议 Redis 支持 8 种核心数据结构,每种数据结构都有一系列的操作指令,除此之外,Redis 还有事务、集群、发布订阅、脚本等一系列相关的指令。为了方便以一种统一的风格和原则来设计和使用这些指令,Redis 设计了 RESP&#…

适用于Windows 电脑的最佳视频恢复软件和方法

毫无疑问,丢失您的基本数据总是有压力的,尤其是当这些是您为捕捉最美好回忆而收集的重要视频文件时。要恢复丢失或损坏的视频文件,您可以借助视频恢复工具。但是,在选择最佳视频恢复工具时,您必须考虑多个扫描选项&…

Linux .eh_frame section以及libunwind

文章目录 前言一、LSB二、The .eh_frame section2.1 简介2.2 The Common Information Entry Format2.1.1 Augmentation String Format 2.3 The Frame Description Entry Format 三、The .eh_frame_hdr section四、libunwind五、基于Frame Pointer和基于unwind 形式的栈回溯比较…

紫光展锐突破创新终端品类,搭载展锐芯的全球首款二合一5G云电脑正式发布

近日,搭载紫光展锐5G芯片T760的中兴云电脑逍遥系列正式发布,亮点: 全球首款二合一5G云电脑,支持本地/云端双模式,一键切换,用户可同时享有Android平板和Windows云电脑两种形态;支持5G蜂窝网络&…

LLama3 | 一. 本地 Web Demo 部署

前置工作 课程文档:Llama3-Tutorial/docs/hello_world.md at main SmartFlowAI/Llama3-Tutorial GitHub 1.安装vscode 2.安装vscode插件 Remote SSH 3.配置 VSCode 远程连接开发机 ssh连接开发机 进行端口映射 在开发机控制台中点击自定义服务,复…

DeepDriving | CUDA编程-02: 初识CUDA编程

本文来源公众号“DeepDriving”,仅用于学术分享,侵权删,干货满满。 原文链接:CUDA编程-02: 初识CUDA编程 上一篇文章DeepDriving | CUDA编程-01: 搭建CUDA编程环境-CSDN博客介绍了如何搭建CUDA编程环境&a…

阿里云数据库 SelectDB 版全面商业化,开启现代化实时数据仓库的全新篇章

2024 年 5 月 21 日,由阿里云联合飞轮科技共同举办的「阿里云数据库 SelectDB 版商业化产品发布会」于线上召开。阿里巴巴集团副总裁、阿里云数据库产品事业部负责人李飞飞宣布,阿里云数据库 SelectDB 版在中国站及国际站全面发布,正式开启商…

5. JVM面试题汇总

Java全栈面试题汇总目录-CSDN博客 1. 说一下JVM的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。 Cl…

Kibanna安装配置

环境:windows10、ES(8.13.3)、Kibana(8.13.3)、Logstash(8.13.3) 1.Kibanna安装配置 Kibanna对ES的数据进行可视化、分析和监控 Download Kibana Free | Get Started Now | ElasticDownload K…

零部件销售|基于SSM+vue的轻型卡车零部件销售平台系统的设计与实现(源码+数据库+文档)

轻型卡车零部件销售平台 目录 基于SSM+vue的轻型卡车零部件销售平台系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1 系统功能模块 2 管理员功能模块 3 用户后台功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题…

MavLinK协议

由于在公司需要使用这个,我就写一个文章用于入门级别 简单介绍 MAVSDK是PX4开源团队贡献的基于mavlink通信协议的用于无人机应用开发的SDK,其可以部署在Windows、Linux、Android等多种平台,并且支持多种语言如c/c、python、Java等。 在官网…

5月30日在线研讨会 | 面向智能网联汽车的产教融合解决方案

随着智能网联汽车技术的快速发展,产业对高素质技术技能人才的需求日益增长。为了促进智能网联汽车行业的健康发展,推动教育链、人才链与产业链、创新链的深度融合,经纬恒润推出产教融合相关方案,旨在通过促进教育链与产业链的深度…

XV4001KD汽车级应用的数字输出陀螺传感器

XV4001KD是一款专为汽车导航系统和远程信息处理而设计的数字输出陀螺传感器。采用SPI/I2C串行接口,具有高精度的16位的角速率输出和11位的温度输出功能,能够准确地测量车辆的运动状态和环境温度,为导航系统和信息处理提供可靠的数据支持。以及…

深度学习基础之《TensorFlow框架(18)—卷积神经网络(2)》

一、卷积层 1、卷积层(Convolutional Layer)介绍 卷积神经网络中每层卷积层由若干卷积单元(卷积核)组成,每个卷积单元的参数都是通过反向传播算法最佳化得到的 卷积运算的目的是特征提取,第一层卷积层可能…

word页眉线如何置于文字上方

然后 敲黑板,点这里

学硕都考11408的211院校!河北工业大学计算机考研考情分析!

河北工业大学(Hebei University of Technology),简称河北工大,坐落于天津市,由河北省人民政府、天津市人民政府与中华人民共和国教育部共建, 隶属于河北省,是国家“双一流”建设高校、国家“211…

Linux磁盘高级操作

RAID RAID存储系统是一种数据存储虚拟化技术,它将多个物理磁盘驱动器组合成一个或多个逻辑单元,以提供数据冗余和/或提高性能。 1. RAID 0 无奇偶校验与冗余(磁盘容错)的条带存储(带区卷/条带卷) 由两块…

科技巨头的下一个目标:Web3与物联网融合

引言 随着技术的不断演进和创新,科技巨头们正在将目光聚焦到Web3与物联网的融合领域,这将开启一个全新的数字时代。本文将深入探讨科技巨头们在这一领域的动向,以及融合可能带来的影响和未来发展方向。 Web3与物联网的融合趋势 技术发展的趋…