基于Python的新浪新闻爬虫系统的设计与实现

2018-12-31 00:00:00陈猛
现代信息科技 2018年7期

摘 要:网络爬虫属于网络机器人,也被称为网页蜘蛛。随着科学技术在人们生活中的不断渗透,对计算机的依赖程度逐渐提升,搜索引擎也变得更加重要,但是以往传统的搜索引擎已经难以满足现代化需求。对此,本文在Python的基础上研究出了一种新型的网络爬虫,它能够很好地克服传统引擎中存在的弊端,为人们提供更多、更全面的搜索内容。基于此,本文将以新浪新闻为例,对Python爬虫系统的设计与实现进行分析。

关键词:Python;新浪新闻;爬虫系统

中图分类号:TP391.1;TP393.092 文献标识码:A 文章编号:2096-4706(2018)07-0111-02

Abstract:The network crawler belongs to the network robot,also known as the web spider. With the continuous infiltration of science and technology in human life,the dependence degree of the computer is increasing gradually,and the search engine is becoming more important. But the traditional search engine has been difficult to meet the needs of modernization. Based on Python,a new type of web crawler is developed. It can overcome the drawbacks in the traditional engine and provide more comprehensive search content for people. Based on this,this article will take Sina News as an example to analyze the design and implementation of Python crawler system.

Keywords:Python;Sina News;crawler system

0 引 言

在以往使用传统搜索引擎的过程中,通常会存在一些不需要的信息,这些信息使人们对所需信息的获取受到阻碍,展现出搜索引擎的弊端。在网络技术不断发展的背景下,传统搜索引擎将会浪费很多时间,不利于搜索效率的提升。而Python基础上的爬虫系统的设计与实现,将使信息的搜索效率得到显著提升,目前在新浪新闻中得到广泛应用。

1 Python爬虫系统设计

网络爬虫主要是借助每个网页的网址对相关内容进行筛选后,将最终结果呈现在用户面前,而不是单纯地通过人工浏览的方式获取所需信息。Python属于脚本语言的一种,具有urllib、urllib2相关爬虫基础库。在Python语言基础上开发一款软件,名为Scrapy,它能够适用于Windows、Linux等多种系统。如若获取到的网页中存在大量的HTML代码,则在以往的搜索引擎中需要下载许多内容,使用Python爬虫系统就无需太多操作,秩序制定一部分模块,便能够实现爬虫的功能。

2 Python爬虫系统的设计

2.1 设计需求

在对网络爬虫系统进行开发的过程中,首先需要解决的基础性问题是系统分析,将与系统设计相符合的代码与功能筛选出来,以此促进爬虫系统的开发力度,使开发结果能够与系统的真实需求相符合。在爬虫系统中主要采用模块化的设计方式,各个功能具有自己独立的建设模块,这为后续的代码维护提供了极大的便利,可以使代码的作用得到充分发挥。对于整个系统来说,需要将各个模块进行编制以后来实现整个系统功能。在新浪所使用的爬虫系统中,主要是按照用户的某些上网习惯进行专业化的网络爬虫设计,使系统中的各项功能均能够得以明确。同时,在系统设计的过程中,还应为后续的系统更新与维修等做好准备[1]。

2.2 功能设计

2.2.1 网址管理器

网址管理器的设计主要分为三种类型:一是采用内存存储网址,这种主要适用于数据量较少的情况。将网址储存到两个集合当中,一个集合代表待爬集合,另一个集合代表已爬集合,然后在Python的基础上,利用Set()来实现系统的功能设计,并且Set()自身具有较强的清除功能,能够将系统中的重复值全部清除;二是采用关系数据库,这种适用于对数据进行长久存储的情况。例如,建立表格,用两个字段分别代表已爬网址与待爬网址;三是将网址存储到缓存数据库当中,这种更适合于数据量较大的情况。

2.2.2 网页下载器

它是整个爬虫系统中最重要的模块,网页中展示的内容通常为HTML格式,现阶段在Python中支持两种网页下载格式,一种为Python官方的基础模块lib2包,另一种为request第三方工具包,它在功能方面具有十分显著的优势。

2.2.3 网页解析器

它的主要作用是对网页中的内容和数据进行解剖与分析。在Python基础上的网页解析器主要分为两种,一种采用正则表达式的方式将整个文档看作字符串,利用模糊匹配的方式将数据价值提取出来,这种方式虽然较为直观,但是对于复杂度较强的文档来说,这种方式的操作难度较大,如若其中某个正则匹配有误差,则会导致该程序长期处于循环当中;第二种是按照HTML网页建立一个DOM树,通过树的模式对各个节点进行搜索,按照树形的上下结构,能够很容易地找出各个元素所在的位置。

2.2.4 数据导出

采用Python能够将数据导出,并且格式主要为CSV格式,同时也支持其他格式的文件。在导出的过程中应注意数据编码的问题,避免导出文件出现乱码现象。

3 Python爬虫系统的实现

在Python基础上进行爬虫系统设计后,对系统的实现进行检验。本文主要以新浪新闻为例,首先利用爬虫获取相关新闻的网址链接,然后根据网址对目标新闻信息进行解析,最后将其存储到相应的文件当中,具体的系统实现过程如下所述。

3.1 获取所需新闻

要对全部新浪新闻URL进行获取,首先需要找到与URL相关的入口。例如,新浪新闻网,它的入口网址为:http://news.sina.com.cn/,进入网页以后能够看到滚动、直播、国内、社会、军事、政务等十余个栏目,比如在“军事”处进行抓取便能够看到最新的军事热点新闻,在下一个子栏目中进行点击,便是将上下军事新闻进行链接,将新闻的序号填写上去,如0、15、30等,每次递增15个,然后对序号进行调整,能够实现对下一个页面的展示。举例说明,以start=0代表第一个页面,以start=15代表第二个页面,以此类推,序号每次增加15。以此来获取更多不同类型的新闻信息[2]。

对新浪新闻URL中爬虫进行获取的方式有两种,一种为spiederUtil,另一种为doubanSpider。其中后者的获取流程为:首先在main函数中构建一个对象,命名为douban Spider,将该对象与getcontents函数相结合,抓取到新闻列表当中全部的URL源代码;然后使用spiderUtil类对文件进行存储;最后,利用readALL函数对获取到的文件进行预览,并且使用parse Web函数对源代码进行解析,使其成为新闻数据,通过spiderUtil类中的save方式对这些新闻信息进行存储。

3.2 解析新闻信息

由于新浪新闻的内容定期更新,要想减少对服务器资源的利用,则需要在新闻界面功能中将爬虫更新时间定为每小时一次。在新闻界面中,将当天的热点新闻、最新新闻显示在突出位置,并且点击新浪新闻的标题,便能够进入到网站当中,对新闻信息进行详细地了解与解析。

首先,对items.py文件进行修正。items.py文件与TutoralItem类相对应,利用其将scrapy中的Item类与Field类反映出来,最终对新浪新闻进行定义;其次,对Pipelines.py文件进行修正,主要是对管道文件进行处理,将Spider.py文件进行二次编写,在具体的文件中,该文件作为爬虫主体存在;最后,对settings.py配置文件进行修正,对于部分具有防止爬虫机制的网页来说,需要对其属性进行相应的调整,使新浪新闻信息顺利科学地得到解析[3]。

4 结 论

综上所述,随着科学技术的不断发展,以往传统的搜索引擎已经难以充分满足当前的信息获取需求,而爬虫技术的应用有效地克服了传统引擎的弊端,具有较大的应用价值,能够通过数据抓取挖掘出更多潜在的有用信息。同时,Python语言功能十分强大,支持多种软件工具形式,在此基础上将爬虫系统应用到新浪新闻中,能够为Web数据信息的抓取提供极大的帮助,促进该网站的健康高效运行。

参考文献:

[1] 赵鹏程.分布式书籍网络爬虫系统的设计与实现 [D].成都:西南交通大学,2014.

[2] 吕阳.分布式网络爬虫系统的设计与实现 [D].成都:电子科技大学,2013.

[3] 郝以珍.基于页面分析的网络爬虫系统的设计与实现 [D].武汉:华中科技大学,2012.

作者简介:陈猛(1991.03-),男,汉族,江苏扬州人,硕士在读。研究方向:计算机技术。