基于python的网络爬虫技术的研究

2019-09-10 20:25刘文辉李丽
E动时尚·科学工程技术 2019年3期
关键词:分析

刘文辉 李丽

摘 要:面对数据大爆炸,人们很难获取有用的信息。网络爬虫技术成为了搜索引擎中最为重要的部分,能够有效的在海量数据中找到有价值的信息。本论文从不同方面基于python的网络爬虫技术的研究,希望为研究网络爬虫技术的专家和学者提供理论参考依据。

关键词:python;网络爬虫技术;分析

随着我国社会化和移动互联网的逐步发展,网络上的数据呈爆炸式增长。数据大爆炸,导致了那些有需要的人们在网上找他们所需的信息愈发的困难,由此搜索引擎根据这种需求产生了。这个时候我们需要搜索引擎去解决的困难,不仅仅是帮助人们从大量的数据里找到答案,还要在大量的答案里面找到人们最需要的结果,迅速快捷的找到精准答案比找到很多无用答案更被人们所需要。搜素引擎要做什么呢?搜索引擎需要从海量数据中提取价值,即为数据挖掘。从本质上看,搜索引擎是一个典型的大数据应用。网络爬虫技术在搜索引擎中,是很关键也很基础的构件。搜索引擎聚集了网络中成千上万的信息网页,并为网页中逐个词建立索引。在人们设立搜索引擎的过程中,采集信息网页是一个很重要的部分。爬虫程序就是用来搜集网页的程序。网络爬虫是搜索引擎中信息采集的部分,整个搜索引擎索引网页的质量、数量和更新周期,都会受网络爬虫技术性能的影响。因此对于网络爬虫的研究具有深远的意义。

1 网络爬虫以及网络爬行

网络爬虫(Web Crawler)是搜索引擎的最基础部分,主要是一个能够下载网页的计算机程序或者脚本,又被称为网络蜘蛛(Web Spider)。一般而言,网络爬虫从种子集的URL 集合开始运行,先将 URL 放入一个有序队列中,然后按照一定的顺序将 URL 取出,然后下载所对应的页面。经过对网络页面的分析,获取新的 URL,并将其放入有序队列中,如此反复,直到队列为空或者是满足停止爬行的条件,从而遍历整个网络。这便是网络爬虫的运行过程,称为网络爬行(Web Crawling)。

2 网络爬虫的分类

网络爬虫的分类比较多,根据其结构和实现技术主要可以分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫以及深层网络爬虫四种,实际应用中的网络爬虫一般是多种及技术结合实现的。

2.1通用网络爬虫

一般情况下,通用网络爬虫对爬行页面的顺序要求不高,大多采用并行的工作方式,刷新页面需要的时间比较长。因此,通用网络爬虫往往会采用一定的爬行策略来缩短爬行时间,比较常用的有深度优先和广度优先两种。深度优先是指按照深度由低到高访问链接,直到无法再深入;广度优先是指首先爬行网页的浅目录内容,然后爬行深目录内容。比较常见的通用网络爬虫有 Mercator 和Google Crawler。Google Crawler 是一个分布式的爬虫,它利用异步 I/O 来实现并行化,并且拥有独立的进程来维护 URL 队列,Google Crawler 还使用了PageRank 等多种算法来提高系统的性能。

2.2聚焦网络爬虫

聚焦网络爬虫能够选择性的爬行与预设主题相关的页面。聚焦爬虫的爬行范围小,能够有效的节省网络资源,并且页面更新比较快。聚焦网络爬虫的爬行策略主要由页面的内容评价以及连接的结构评价决定。在基于内容评价的爬行策略中,主要采用 Fish Search 算法来评价查询页面与查询主题的相关度;在基于连接结构评价的爬行策略中,主要 PageRank 算法来评价链接的重要性,具体就是优先访问 PageRank 值最大的页面;在基于增强学习的爬行策略中,利用贝叶斯分类器对文本进行分类,从而计算出不同链接的重要性,从而确定访问顺序。

2.3增量式网络爬虫

增量式网页爬虫主要是对已经下载的网页进行更新,只爬行更新的网页,从而保证刷新出的网页是最新的。增量式网络爬虫一般只在页面需要时才会开始爬行,不会重复下载没有发生变化的网页,因此在很大程度上减少了网络资源的浪费,但是算法比较复杂且实现难度比较大。

3 基于Python的网络爬虫分析

3.1 Python语言的优越性

(1)方便简单,容易上手。Python几乎能在所有的操作系统上运行,很容易上手,初学者可以快速适应。

(2)Python是一个广泛使用的脚本语言,其自带了urllib、url-lib2等爬虫最基本的库,可以抓取Url的内容。

(3)Python擅长处理字节流的各种模式,具有很好的开发速度。

3.2 Python网络爬虫模块

3.2.1 Url管理模块

Url管理模块的作用是管理Url,包括已经被抓取的Url集合和还未被抓取的Url集合。Url管理模块可以有效预防重复抓取循环抓取的问题。

Python中实现网址管理有三种途径:

(1)存储在内存中,针对于Url数据较少的情况。在Python中用Set()集合加以实现,Set()可以消除重复数据,避免重复抓取的问题。

(2)存储在关系数据库,实现永久存储。建立Url表,该表中有两个字段,一个字段是Url地址,另一个字段用来表示Url是否被抓取。

(3)存储在缓存数据库redis中,针对于Url数据较多的情况下。也可以用Set()集合来实现,来存取“待爬”的Url地址和“已爬”的Url地址。

3.2.2 网页下载器

网页下载器将Url对应的网页下载到本地,将其存储为字符串,以便接下来对数据进行处理。

Python支持的网页下载工具有两种:Python自身携带的urllib2模块。urllib2针对于简单的网络爬虫,能够完成网页下载,提交用户数据,代理访问,客户登录等多种功能。

3.2.3 网页解析器

网页解析器用来从网页中提取从最初想要的数据。实则上提取的是两部分:(1)Url列表;(2)目标数据。Python中的网页解析器有两种类型:

(1)利用正则表达式。正则表达式将网页当作字符串来处理,只适用于简单的网页。一般网页较为复杂时,不采用此类方法。

(2)基于网页的DOM结构。DOM树是一种树形标签结构。网页解析器会将HTML文档当成DOM树,对其进行上下级结构的遍历来提取有用信息。使用树形结构可以对网页中的具体信息来进行定位,定位到具体的某个节点、属性等。其中BeautifulSoup解析器功能强大,更为盛行。BeautifulSoup利用find_all()和find()方法來搜索节点,find_all()可以查找所有符合查询条件的标签节点,并返回一个列表。find()方法查找符合查询条件的第一个标签节点。用这两种方法搜索节点,提取有价值信息。

参考文献

[1]大数据环境下的网络爬虫设计[J].郭丽蓉.山西电子技术.2018(02)

[2]基于网络爬虫技术的时令旅游信息获取[J].郑鑫臻,吴韶波.物联网技术.2018(05)

[3]主题网络爬虫抓取策略的研究[J].刘清.科技广场.2017(04)

[4]网络爬虫技术的研究与实现[J].缪治.中国新通信.2019(06)

[5]基于匿名网络的网络爬虫设计与实现分析[J].刘焕欣.计算机产品与流通.2017(12)

[6]主题网络爬虫关键技术的应用探讨[J].杨凌云.电脑编程技巧与维护.2018(11)

[7]网络爬虫技术在电力产业中的应用[J].贺冠博,苏宇琦,黄源.电子技术与软件工程.2017(18)

[8]一种新的主题网络爬虫爬行策略[J].宋海洋,刘晓然,钱海俊.计算机应用与软件.2011(11)

猜你喜欢
分析
民航甚高频通信同频复用干扰分析
分析:是谁要过节
回头潮
基于均衡分析的我国房地产泡沫度分析
Units 13—14解题分析