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

目录

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.mzph.cn/pingmian/13914.shtml

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

相关文章

2024电工杯数学建模 - 案例:最短时间生产计划安排

# 前言 2024电工杯(中国电机工程学会杯)数学建模思路解析 最新思路更新(看最新发布的文章即可): https://blog.csdn.net/dc_sinor/article/details/138726153 最短时间生产计划模型 该模型出现在好几个竞赛赛题上,预测2022今年国赛也会与该模型相关。 1 模型描…

CoShNet:使用复数改进神经网络

使用复数改进神经网络 文章目录 一、说明二、了解卷积神经网络三、进入混合神经网络四、令人惊叹的 CoSh 网络五、复杂函数的神奇性质六、相位一致性七、结论 一、说明 本文题为“CoShNet:使用Shearlets的混合复杂值神经网络”,提出了在混合神经网络中使…

深入理解SVM和浅层机器学习算法的训练机制

深入理解SVM和浅层机器学习算法的训练机制支持向量机(SVM)的训练过程SVM的基本概念SVM的损失函数训练方法 浅层机器学习算法的训练机制决策树K-最近邻(K-NN)朴素贝叶斯 结论 深入理解SVM和浅层机器学习算法的训练机制 在探讨浅层…

展现金融科技前沿力量,ATFX于哥伦比亚金融博览会绽放光彩

不到半个月的时间里,高光时刻再度降临ATFX。而这一次,是ATFX不曾拥有的桂冠—“全球最佳在线经纪商”(Best Global Online Broker)。2024年5月15日至16日,拉丁美洲首屈一指的金融盛会—2024年哥伦比亚金融博览会(Money Expo Colombia 2024) 于…

AI智能体|使用扣子Coze基于IDE创建自定义插件

大家好,我是无界生长。 在使用Coze的过程中,有些个性化场景无法通过插件商店已有的插件满足,这个时候就需要通过自定义插件的方式来实现业务需求。下面将通过一个实际案例来简单介绍下如何使用Coze基于IDE创建自定义插件,完成在Co…

2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版

简介: 2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版 下载地址 https://www.kuaiyuanya.com/product/article/index/id/33.html 图片:

使用 Django Rest Framework 构建强大的 Web API

文章目录 安装 Django Rest Framework创建序列化器创建视图和 URL 路由配置认证和权限测试 API Django Rest Framework(DRF)是一个强大的工具,用于在 Django Web 框架中构建灵活且功能丰富的 Web API。它提供了许多功能,包括序列化…

(六)DockerCompose安装与配置

DockerCompose简介 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现…

protobuf学习

学习了下protobuf这个工具,可以用来序列化数据结构,而且效率很高,数据可以压缩的更小。 记录下,我这里主要在C#里使用,从NuGet程序包安装以下两个 安装好后可以在该程序目录找到 packages\Google.Protobuf.Tools.3.26.…

在windows中使用wsl下的unbuntu环境

1 unbuntu下载编译环境 编译环境安装命令: sudo apt install gdb sudo apt install gcc sudo apt install g 2 使用vscode正常打开项目,在window中打开的项目(官方推荐将项目放在linux中的home目录) 但在windows中也可以使用&a…

汐鹤Key码查询,网站授权系统源码

汐鹤Key码查询和网站授权系统源码主要用于特殊虚拟物品销售商家。 下 载 地 址 : runruncode.com/php/19770.html 附带插件功能(网站授权),但目前开发内容较少,请谅解!同时,代码优化空间很大…

【软考】设计模式之装饰器模式

目录 1. 说明2. 应用场景3. 结构图4. 构成5. 适用性6. 优点7. 缺点8. java示例 1. 说明 1.动态地给一个对象添加一些额外的职责。2.Decorator Pattern。3.就增加功能而言,装饰器模式比生成子类更加灵活。4.一种在不改变现有对象结构的情况下,动态地给对…

垃圾溢满堆放识别检测

垃圾溢满堆放识别检测系统的核心技术是基于YOLO深度学习模型,垃圾溢满堆放识别检测系统能够在监控画面中快速识别出垃圾箱外部的垃圾堆放情况。系统经过大量的训练和优化,能够识别出各种垃圾的特征,并能够准确判断是否溢满堆放。垃圾溢满堆放…

鸿蒙OS开发:【一次开发,多端部署】(多设备自适应能力)实例

多设备自适应能力 介绍 此Demo展示在JS中的多设备自适应能力,包括资源限定词、原子布局和响应式布局。 效果预览 使用说明 1.本示例中的资源限定词和响应式布局针对常见设备类型做了适配,可以在预览器中开启"Multi-profile preview"进行多…

【Day7:JAVA面向对象的初级使用】

目录 1、类和对象1.1 类的介绍1.2 类和对象的关系1.3 类的组成 2、对象内存图2.1 单个对象内存图2.2 两个对象内存图2.3 两个引用指向相同内存图 3、成员变量和局部变量3.1 成员变量和局部变量的区别 4、this关键字4.1 this可以解决的问题4.2 this介绍4.3 this内存图4.4 this总…

浏览器输入URL到网页显示之间发生了什么

记: DNS(Domain Name System,域名系统)就是根据域名来查找对应的IP地址的一个关键系统。 域名层级关系: 根域名服务器(.)顶级域名服务器(.com)权威域名服务器(server.com) 首先浏…

5.22R语言初步学习-2(使用包、绘图)

本文逻辑可能有些凌乱,是在数据处理的使用中学习R语言,所以用到的一些包、函数等都直接写在这了,主要就是处理数据的一个过程可能会用到的部分函数。 包的使用 R语言的使用,很大程度上是借助各种各样的R包的辅助,从某…

关于智慧校园安全用电监测系统的设计

人生人身安全是大家关注的话题,2019年12月中国消防统计近五年发生在全国学生宿舍的火灾2314起(中国消防2019.12.应急管理部消防救援局官方微博),违规电器是引发火灾的主因。如果在各寝室安装智能用电监测器实时监督线路参数&#…

MVSnet 代码详解(pytorch)

大致过一下MVSnet 论文中核心的点对应代码应该怎么写。 forward 函数需要 照片,映射矩阵,以及深度值。 照片的shape是 (1,5,3,1184,1600)代表着1个batch,5张图片,然后一次是每张图片的channel和…

Android低代码开发 - MenuPanel的源码剖析和基本使用

看了我上篇文章Android低代码开发 - 像启蒙和乐高玩具一样的MenuPanel 之后,本篇开始讲解代码。 源代码剖析 首先从MenuPanelItemRoot讲起。 package dora.widget.panelinterface MenuPanelItemRoot {/*** 菜单的标题。** return*/var title: String?fun hasTit…