网站首页  词典首页

请输入您要查询的论文:

 

标题 面向社交网站的主题网络爬虫
范文

    牟宁 郭英杰 陈杰 窦杰 余果芯 李攀攀

    摘要:以豆瓣网站为代表的社交网络空前繁荣,传统的网络爬虫无法满足人们对社交网络信息的爬取及分析的需求,爬取与特定主题内容相关网页的主题网络爬虫便应运而生,该文设计并实现了面向豆瓣网站的主题网络爬虫,实现对豆瓣网站的特定主题页面的爬取。最后,验证了主题网络爬虫设计方案的可行性。

    中图分类号:TP393 文獻标识码:A 文章编号:1009-3044(2018)32-0251-03

    1 背景

    随着信息技术的高速发展,社交网络如Facebook、Twitter、豆瓣网等也逐步地渗透到网民生活的方方面面,用户可以在社交网络上表达自己的意见、态度、看法或情感[1]。社交网络承载着大量的舆情信息,使用网络爬虫可以对社交网络舆情信息进行有效地采集、组织和管理。然而,通用的网络爬虫面临着爬取信息内容繁杂、主题不清晰等弊端,为了以主题相关性地爬取页面,面向垂直领域的主题网络爬虫便应运而生[2]。

    一般来讲,网络爬虫是一种能够自动爬取网页并提取网页内容的程序,是构建搜索引擎的支撑技术之一[3]。在爬行策略上,主题网络爬虫与通用网络爬虫不同,主题网络爬虫通常以主题性和页面内容相关性作为网页搜索和爬取的依据,即能按照用户预定义的主题策略进行信息采集,其爬取页面具有大量相关性,页面的利用率更高[4]。

    豆瓣网站作为社交网站的典型代表,对社交网络产生了深刻的影响,该文以豆瓣网站为例,设计并实现了主题网络爬虫,能依据指定的主题采集豆瓣网站的相关信息。

    2 主题爬虫设计及实现

    2.1 主题网络爬虫的过程主要框架

    主题网络爬虫的系统架构如图1所示,主要包括页面下载模块、主题判别模块、调度模块等核心部分。页面下载模块主要完成从指定的Web站点中将页面下载到本地,主题判别模块是主题网络爬虫的关键核心模块,主要负责将判别待提取的页面是否与制定主体相关,将相关度高于一定阈值的页面加入下载队列。

    2.2 主题网络爬虫工作流程

    主题网络爬虫过程中,调度器、URL管理器、下载器、解析器与应用各功能模块相互配合协同工作。调度器在循环地向URL管理器发送命令,判断是否有待爬取的URL列表、在得到URL管理器的一个待爬取的URL时,启动下载器执行下载流程,下载URL所指向的页面,并使用解析器解析URL列表,获取有用的信息,调度器将爬取的信息传送给应用,使爬虫程序循环地执行,在循环的调度过程中,网络爬出持久化保存相关主题的页面数据。

    2.3 网络爬虫的URL管理器

    URL管理器管理待爬取的URL列表和已爬取的URL列表,防止重复爬取与循环爬取。URL管理器较好地避免了爬虫程序采集信息的冗余度,给爬虫的效率带来负面影响,具体来讲,URL管理器的主要功能如图2所示。

    爬虫程序使用关系型数据库如MySQL、Oracle等保存所爬取的页面,采用标准的SQL接口与数据库连接,使用Python内置的set( )方法对重复的数据项进行去重处理[5]。

    3 面向豆瓣网站的爬虫设计及实现

    3.1 爬虫的网页下载器

    爬虫下载器主要使用Python自带的Urllib库进行开发,在Python 2.7.8版本中,所使用的是Urllib2库中的Urlopen函数,在网络爬虫的过程中设置response = urllib2.urlopen(request)语句,以取得网页的响应。Urlopen函数可用于打开URL,并获取URL数据。Urlopen函数的参数可以是URL链接,也可以使Request对象,对于简单的网页,直接使用URL字符串做参数,但对于复杂的网页,设有防爬虫机制的网页,在使用Urlopen函数时,需要添加Http header。对于带有登录功能的站点,需要设置Cookie,并模拟浏览器登录,之后再进行网页下载。

    3.2 爬虫的网页解析器

    网页解析器从网页下载器下载到的URL(Uniform Resource Locator,统一资源定位符)队列中提取有价值的数据和新的URL。对于特定数据的抽取,可以使用正则表达式或Python BeautifulSoup库等方法。正则表达式使用基于字符串的模糊匹配,适用于目标数据格式特征比较清晰和明确的场景,这也使得正则表达式方法在网页解析时的通用性不高,比如,每一项正则表达式都要重新设计,无法使用针对电影板块开发的爬虫程序爬取其他板块。而Python BeautifulSoup属于第三方模块,用于结构化解析URL内容。将下载到的网页解析为DOM(Document Object Model,文档对象模型)树,进而结构化解析URL。

    网络爬虫系统中页面解析流程如图3所示,详细步骤如下:

    1)首先访问网页初始种子URL,爬虫系统发出访问请求,取得服务器的信息并获取相关数据。为了爬虫的健壮性,若通过URL访问服务器,无法取得网页返回信息时,则返回错误;

    2)主题相关性判断,包括特征提取与权值计算阶段。在特征提取阶段,通过页面关键词频率,获得文档的特征,达到降维和提高分类精度的效果。该文采用支持向量机的基于文字内容来判断网页与主题的相关性;

    3)当网页访问成功后,网络爬虫开始爬取符合正则表达式的数据信息,并删除重复的冗余信息;

    4)在本地数据库中创建数据库表,将爬取到的信息持久化存储到本地数据库中;

    5)重复上述步骤,直到页面全部爬取完毕。

    主题网络爬虫程序具体实现过程中,网络爬虫爬取页面的过程如图4所示,详细步骤如下:

    1)设置askURL(url)方法,并将URL作为Request()方法的参数,构造Request对象;

    2)将Request对象作为urlopen()方法的参数,发送给远程服务器,获取网页内容返回列表;

    3)使用read( )方法读取远程服务器返回的页面信息;

    4)若在执行过程中未发生任何异常,则在执行完后返回HTML网页内容;

    5)若在执行过程中发生异常,则中断当前的执行语句的执行,跳转到对应的异常处理块中开始执行,终止应用程序并打印错误代码及其原因提要。

    4 系统测试

    为了验证该文爬虫的有效性,使用Python2.7在Win10操作系统上开发爬虫程序。网络环境是100Mbps带宽,以豆瓣网站为例,使用爬虫程序对豆瓣网站的指定主题进行爬取,分别选取读书、电影、音乐3个频道,对应的主题分别是“读书”、“电影”、和“音乐”,爬取的网页数量如表1所示。

    从上表可以看出,根据用户自定义主题和指定的初始URL,该文的主题网络爬虫能够爬取豆瓣网站的相关主题页面,这就验证了该文所设计的爬虫程序具有可用性。还可以进一步看出,在读书社区爬取的页面多达3万余条,验证了网络爬虫程序的稳定性。

    5 结束语

    不同于传统的网络爬虫,主题网络爬虫能针对特定主题提供个性化的信息爬取服务,是面向垂直领域的搜索引擎采集信息的基础支撑技术。该文首先研究了主题网络爬虫的工作原理及其流程,接着设计并实现了面向豆瓣网站的主题网络爬虫,最后实验验证了网络爬虫的可行性。

    参考文献

    [1] 胡亚楠. 社交网络数据获取技术与实现[D]. 哈尔滨: 哈尔滨工业大学, 2011.

    [2] 孙立伟, 何国辉, 吴礼发. 网络爬虫技术的研究[J]. 电脑知识与技术, 2010, 6(15): 4112-4115.

    [3] 于娟, 刘强. 主题网络爬虫研究综述[J]. 计算机工程与科学, 2015, 37(2): 231-237.

    [4] 黄永军. 面向垂直搜索的网络爬虫设计与实现[D]. 北京: 北京邮电大学, 2013.

    [5] 钱程, 阳小兰, 朱福喜. 基于Python的网络爬虫技术[J]. 黑龙江科技信息, 2016(36): 273.

    【通联编辑:谢媛媛】

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/15 22:14:35