草庐IT

主题网络爬虫研究综述

Violent-Ayang 2023-04-24 原文

0 引言

Internet 的飞速发展加快了网络信息量增长。在互联网这个庞大的资源库中, 网页搜索引擎是人们获取外界信息的主要工具。为了提 高检索质量,达到更好的检索体验,通用搜索引擎应运而生。通用搜索引擎利用爬虫程序对网站进行检索,如谷歌、百度等面向所有用户的大型搜索引擎,把种子页面作为搜索起点,力图遍历整个网络,尽可能全面搜索到人们 所需的信息。然而,针对某一特定主题,通用搜索引擎存在信息冗余大、内存占用高、消耗系统资源、查准率低和个性化需求弱等问题 ,为解决这些问题,出现了抓取特定领 域信息资源的主题网络爬虫(Topical Web Crawler)技术。 主题网络爬虫又称主题爬虫(Topical Crawler)和聚焦爬虫 (Focused Crawling),是网络爬虫的一个重要分支 。主题 网络爬虫指尽可能爬行和收集用户所需的网页,与通用网 络爬虫有较大差异,它只抓取用户特定的、与主题相关的 网页,忽略与主题无关的网页,具有准确性、深入性和专业性等特点。 近年来,国内外专家学者对主题网络爬虫技术研究取 得了显著成果,但鲜有文献对主题网络爬虫研究发展状况 进行分析和系统梳理。因此,对近年来主题网络爬虫进行综述显得至关重要。

1 主题网络爬虫定义与工作原理

1.1 主题网络爬虫定义

主题网络爬虫是一种自动搜索并下载互联网资源的程序或脚本,是搜索引擎的重要组成部分,主要负责将互联网上的资源下载到本地,在本地形成网页镜像备份。

1.2 主题网络爬虫工作原理

网络爬虫是一个自动提取网页的程序,它为搜索引擎从 Internet 网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的 URL 开始,获 得初始网页上的 URL,在抓取网页的过程中,不断从当前负面上抽取新的 URL 放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网贡分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的 URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止,另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的杳询和检索。对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。

2 主题网络爬虫研究现状

2.1 国外研究现状

国外主题爬虫研究始于上世纪 90 年代,提出一些获取特定内容的爬行策略,只是当时还没有提出主题网络爬虫概念。1994年,DeBra[4]设计了Fish-search算法用来指导爬虫抓取方向,在特定的范围内爬取网页。若抓取到相关网页,则继续游动,反之则停止。由于Fish不能估算出页面和主题的相关程度,Michael Hersovici[5]基于Fish-Search算法于1998年提出了Shark-Search算法,该算法通过0~1的区间值表示候选URL的优先级。直到1999年,Chakrabarti等[6]提出主题网络爬虫概念,主要用于描述超链接资源发现系统,这一系统主要包括分类器和过滤器。分类器用来评估文本内容和主题相关度,过滤器用来过滤无关链接网页,是早期主题网络爬虫较典型的研究之一。2001年,Junghoo Cho提出了best-first-search搜索策略。上述3类主题网络爬虫的设计思想主要涉及网页上的文本和内容,根据文本和内容选择下载页面及将要访问的URL。基于链接结构评价这一爬取策略主要有PageRank算法和HITS算法。Larry Page[7]提出的PageRank算法,主要根据是否被权威网站指向及链接指向判断网页的关联程度。1998年,Kleinberg[8]提出HITS算法,该算法通过权威和枢纽两个维度衡量页面的价值。若只使用网络链接关系判断网页的关键性而不去判断文本内容,可能导致爬行结果与主题无关,所以一般不单独使用基于链接的爬取策略。

2.2 国内研究现状

相比于国外,我国对主题网络爬虫的研究起步虽晚于国外,但也取得了不少成果。
萧婧婕等设计出基于灰狼算法,旨在解决爬虫在全局爬取中的优先级问题,从而提高爬取的查全率和查准率,能爬取更多网页;蒋宗礼等把SVM、语义分析技术及贝叶斯结合,提高了主题相关度判断;陈千提出了一种改进的best-first策略,该方法将VSM模型和贝叶斯分类器结合,能够预测待爬行链接,从而提高网页收获率。为提高爬取性能,胡萍瑞依据URL的特征和站点特点,设计了基于URL模式集的主题爬虫。实验证明,该爬虫能快速判断爬取页面的相关度,保证了爬取的召回率和准确率。刘林等认为并不是网页的所有URL都与主题有关,因而有必要先通过链接分析过滤掉无关链接,实验表明该方法极大提高了爬行速度;孟竹借助点对互信息(PMI)与词向量模型,判断新的网页链接与主题相关度;熊忠阳等提出基于信息自增益的主题爬虫,该策略在爬行过程中自动更新;白鹤基于数据抽取器构建了一个分布式主题爬虫系统,该系统使用分类标注方法克服了多个主题的兼容问题。针对主题词汇不够细化、未考虑语义词意义延伸等问题,孙红光等采用LDA(Latent Dirichlet Allocation,LDA)模型,基于语义相似度计算模型,引入语义信息的相似度计算模型(SVSM)设计了语义聚焦爬虫(ESVSM)。实验证明,该算法相关网页数量和平均相关度都高于其它算法,抓取精度高达85%;方启明等通过在配置文件里定义目标网站的范围和类型,实现可定制主题爬虫。网页链接权威评估方法主要采用PageRank算法、Hits算法以及基于它们的改进算法,Hits主要应用于特定领域排序,PageRank算法则用于全局排序。

3 网络爬虫关键技术

3.1 网页获取

网络爬虫的基本原理是模拟浏览器进行 HTTP 请求,爬虫 客户端通过 HTTP 请求向 Web 服务器发送请求,获取服务器 端的响应后下载网页,完成爬虫系统爬取工作。目前比较常用的发起网络请求的Python库有urllib2,httplib,requests。

3.2 网页解析

在网页中提取内容一般使用两种方式,一是利用正则表达式做匹配,二是使用现成的解析工具。
正则表达式的功能强大,但对于复杂的网页并不友好。Python 中的解析网页的工具有lxml与BeautifulSoup

4 存在的主要问题

  1. 速度限制
    速度限制是对抗爬虫的一种常见的方法,它的工作方式很简单:网站强制用户可以从单个IP地址执行有限数量的操作。限制可能因网站而异,并基于在特定时间段内执行的操作数量或用户使用的数据量。
  2. 验证码提示
    验证码是另一种更复杂的限制网络抓取的方法。用户可以通过在短时间内发出过多请求、未正确覆盖网络抓取工具的指纹,或使用低质量的代理方式触发验证码。
  3. 网站结构变化
    网站并不是一成不变的,尤其是当用户爬取大型网站时,站点经常更改 HTML 标记,以此破坏用户的网络抓取脚本。例如网站可以删除或重命名某些类或元素 ID,这将导致用户的解析器停止工作。
  4. 网站使用JavaScript运行
    如今许多网站的功能都需要通过用户点击某些区域使得JavaScript代码运行才能正常使用,对于爬虫程序而言常规的提取工具不具备处理动态页面的功能,所以在爬取这类网站时会遇到较大的阻碍。
  5. 加载速度慢
    当网站在短时间内收到大量请求时,其加载速度可能会变慢并变得不稳定。而在网站不稳定时爬虫程序会更快的进行刷新,但这只是雪上加霜,网站会中断抓取器,以确保站点不会崩溃。
  6. IP受限制
    可能导致用户爬虫IP受限的因素有很多,例如用户使用的数据中心代理IP被网站识别、用户爬虫爬取速度过快被封禁等等。在遭遇这种问题时,用户可以选择使用动态爬虫代理,使得自己每次访问都使用不同的IP地址,以此来确保IP不被限制,爬虫高效爬取。

5 研究趋势

主题网络爬虫研究主要集中在搜索策略、网页抓取优 先级设计、主题爬虫系统设计 3 大领域。目前主题网络爬 虫研究不断进步,但有待深入研究的问题如下:

(1)当前,基于网页内容的主题网络爬虫搜索策略研 究方向是使用成熟的文本分类法对网页中的文本进行分类,忽略了网页结构影响主题相关度等问题,同时,网页是 否进行去噪处理直接影响到主题的判断精度,因此对网页 去噪研究有待提升。此外,该策略未考虑到互联网信息随 时发生变化的情况,因网页未及时更新导致抓取到的信息 可能已经过时。

(2)站点的质量越高,URL 就越规范,则基于链接的主 题网络爬虫的主题判断精确度越高;当网站的 URL 路径不 规范时,基于链接的主题网络爬虫判断精确度就会降低。

(3)现阶段,主要的网页链接分析是 PageRank 和 Hits 算法 ,有些使用了 SALSA 和 Hilltop 算法,在链接分析方 面有良好效果。目前,搜索引擎查询首要采用链接分析算 法,假如将链接分析算法用于主题网络爬虫搜索策略以确 定网页抓取优先级,则会大大提高主题网络爬虫的信息提取和网页搜索性能。

6 结语

随着人们的个性化信息需求不断加大,主题网络爬虫成为搜索引擎领域研究热点。其中,主题网络爬虫研究重点是网页抓取优先级、爬行策略以及设计实现主题网络爬虫系统3大领域。本文先给出主题网络爬虫的定义和基本原理,然后对国内外主题网络爬虫研究发展状况进行分析和系统梳理,探讨了网络爬虫实现所需要的关键技术,并给出目前研究中存在的问题以及进一步研究的方向。希望有更多学者关注、加入到主题网络爬虫研究实践中,共同推动主题网络爬虫研究健康快速发展。

有关主题网络爬虫研究综述的更多相关文章

  1. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  2. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  3. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  4. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  5. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  6. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  7. 常见网络安全产品汇总(私信发送思维导图) - 2

    安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un

  8. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  9. ruby-on-rails - 在暂存环境中覆盖 ActionMailer 主题 - 2

    我希望从我们的登台服务器发送的所有电子邮件的主题中都带有“[STAGING]”字样。在Rails3.2中使用ActionMailer是否有一种优雅的方式来做到这一点? 最佳答案 这是我使用ActionMailerInterceptor找到的一个优雅的解决方案基于anexistinganswer.#config/initializers/change_staging_email_subject.rbifRails.env.staging?classChangeStagingEmailSubjectdefself.delivering_

  10. ruby - 在 Ruby 中训练神经网络 - 2

    在神经网络方面,我完全是个初学者。我整天都在与ruby​​-fann和ai4r搏斗,不幸的是我没有任何东西可以展示,所以我想我会来到StackOverflow并询问这里的知识渊博的人。我有一组样本——每天都有一个数据点,但它们不符合我能够找出的任何明确模式(我尝试了几次回归)。不过,我认为看看是否有任何方法可以仅从日期预测future的数据会很好,而且我认为神经网络将是生成希望表达这种关系的函数的好方法.日期是DateTime对象,数据点是十进制数,例如7.68。我一直在将DateTime对象转换为float,然后除以10,000,000,000得到一个介于0和1之间的数字,我一直在将

随机推荐