汪洋 姜新通
【摘 要】人类社会已经进入大数据时代,这正在改变着我们的工作和生活。随着互联网的兴起和发展,同时也产生了各种对人类有价值的数据。快速搜索数据和充分利用数据信息已成为一个巨大挑战。这样的需求催生了搜索引擎的出现和发展,搜素引擎是用户获取网络信息的重要途径,给人们带来了极大的便利。然而,随着互联网的不断发展,搜索引擎已不能满足各个领域的需求了,因此网络爬虫技术就应运而生了。而Python作为一种强大的语言,使得网络爬虫技术能够更好地提取数据。
【關键词】Python;搜索引擎;爬虫技术
一、引言
随着互联网时代的快速发展,人们对网络信息和数据的检索和提取的要求也逐渐提高。由于部分信息数据搜索过于复杂,而且访问Web检索工具又一般都是些传统的搜索引擎,它们则具有一定的局限性,往往不能满足用户的检索目的和需求。因而引入网络爬虫技术则具有重大意义,考虑到Python语言目前在市场上十分火热,而且在编写爬虫领域方面具有一定的优势,为此,本文将对基于Python的网络爬虫技术展开初步的研究。
二、国内外基于Python爬虫技术概况
(一)网络爬虫技术概述
网络爬虫技术作为搜索引擎的重要组成部分,可以自动地对相关页面和内容进行爬虫和保存。网络爬虫又被称为网络蜘蛛,所以可以看出爬虫就是一只蜘蛛,而互联网其实就是一张巨大的蜘蛛网,爬虫的目的就是将蜘蛛网上的猎物全部抓取起来。
(二)国内外研究现状
随着互联网的快速发展,全球互联网网站和网页的数量也在迅速增长,互联网的信息量也呈指数级的增长。互联网是一个巨大的高度开放,缺乏管理的信息空间。虽然信息量十分巨大,但是对于用户来说,真正有价值的信息就变得非常有限。如果用户想要从互联网上获取有用的信息,他们需要搜素引擎的帮助,如信息检索系统。搜索引擎是根据一定的策略和特定的计算机程序从互联网进行搜索的软件系统,在处理和处理信息后为用户提供检索服务。目前市场上比较流行的搜索引擎有百度、Google等。搜索引擎的发展伴随着信息检索技术的发展。1972年,APPNET实验网络的成功标志着互联网的诞生。1993年浏览器的发展更是促进了搜索引擎的快速发展。1994年由美籍华人杨致远和DavidFilo共同创建了世界上第一个网络检索工具Web Crawler,也就是大家所熟悉的Yahoo。
(三)爬虫技术现状和爬虫从业者面临的问题
网络爬虫技术发展至今,已经有无数的开源库和开源框架为我们提供了便利而更好地开发。例如scrapy等其他框架。有了这些开源框架就可以帮助我们根据自己想要爬取的内容来定制爬取规则并快速地获取到我们想要的数据,而不需要我们再去构建一个符合条件的、完整的搜索器。但是在网络资源爆炸的情况下,网页的内容更新的速度极为迅速,网页的结构也在时刻变化。爬虫能否及时检测网页更新并采取相应的对策,已成为了爬行技术是否成熟的标识之一。在爬虫设计过程中存在着对于统一资源地址的去重问题。现在的网络资源的规模十分庞大早已超出了我们以前的认知范围,所以在网络中存在许多相同的统一资源地址。在数据的爬行过程中,网络爬虫必然会收集重复的内容。这不仅浪费时间成本,而且浪费服务器等其他硬件资源。所以设计一个网络爬虫的时候,应该考虑到爬虫是否能够分析网页内容结构,分辨相同内容的脚本变化,从而找到不重复的内容下载保存并提高运行效率。同样,在对网站信息进行爬行的过程中,网站可能会限制每个IP的访问速度或访问次数,或者有时会直接禁止访问网站。由于出现这样限制IP访问的情况,会导致用户不能及时获取到信息以至于不能完成任务。所以在设计爬虫的过程中要将IP的因素考虑到,这样才不会出现限制或封锁IP的问题。在爬取目标网页信息的过程中,多线程会提高爬虫的速度,而所有线程在同一进程下,线程的问题是共存空间,通讯效率高,切换开销小。而在Python中又由于GIL全局解释器锁的存在,一个线程需要执行任务必须获取GIL,但是在Python的进程里只有一个GIL。所以多线程在爬虫技术设计的过程中的选择是不可缺少的条件之一。
三、爬虫技术中问题的解决方案介绍
网络爬虫技术中遇到的问题层出不穷,就我在爬虫中得到的经验提出以下几种解决方案。某些网页具有反爬机制,目的就是为了不让爬虫爬取到数据。所以当同一个IP爬取次数过多时,IP会被禁止爬取数据。使用代理后,我们可以让爬虫伪装其真实的IP,所以我们使用大量的随机的代理进行爬行,但网站不知道是我们的爬虫一直在爬行数据,有效地解决了IP封锁等反爬行的问题。在高速运行的爬虫工作过程中,难免会碰到URL重复的问题,我通常会采取一种简单的方式就是将访问过的URL保存到数据库中,这样当我们访问下一个URL的时候,打开数据库去查询这个URL是否被访问过即可,虽然会导致效率下降,但是却十分方便。IO密集型代码在Python的多线程中占据了更好的位置。当我们使用多线程爬取数据时,会出现爬虫每次都会把URL列表里URL在没有爬取到内容的时候就已经生成了一个线程,如果出现断网等其他特殊情况的话,就会有很多的URL其实没有被爬取,之后对存储文件就会变得很麻烦。对于任务数量不断增加的程序来说,每有一个任务就会有一个新的线程生成,线程会越来越多以至于到最后不能控制,所以固定线程数量的线程是必不可少的。
四、结语
本文主要介绍基于Python的网络爬虫技术的定义和特点,网络爬虫技术的产生和发展,还重点介绍了在爬虫过程中遇到的问题和解决办法。在这个大数据时代,网络爬虫技术可以有效准确地抓取目标数据,可以为我们节省大量的时间和资源,对信息检索起着十分重要的作用。尤其基于Python的网络爬虫技术更具有必要性,它更能够满足未来信息检索的要求。因此它具有很高的发展前景,同样也具有一定的推广价值和研究价值。
【参考文献】
[1]许剑颖.搜索引擎发展趋势研究[J].中国科技纵横,2013(2):51-55
[2]郭丽蓉.基于Python的网络爬虫程序设计[J].电子技术与软件工程,2017(12):23-24
[3]王晓东.基于元搜索引擎的网络视频搜索系统的设计与实现[D].东南大学.2014
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试