网站地图985论文网
主要服务:硕士论文、论文发表、论文修改服务

基于Python网络爬虫的实现

来源:985论文网 添加时间:2020-05-13 14:28
基于Python网络爬虫的实现
摘要
随着互联网信息技术的快速发展,越来越多用户借助于网络搜索、在线浏览等平台,进行所需要数据信息的获取,而最常用的信息获取方式为网络爬虫。网络爬虫在信息搜索和数据挖掘过程中扮演着重要的角色,对爬虫的研究开始于上个世纪就开始,目前,爬虫技术已趋于成熟。网络爬虫通过自动提取网页的方式完成下载网页的工作,实现大规模数据的下载,省去诸多人工繁琐的工作。网络爬虫又被称为网络机器人,其主要利用Python程序设计语言,对浏览器网页中的HTTP超文本协议、URL地址等进行访问与爬取,不需要人为的干预或操作,就能够完成网站中数据信息的自动爬取。本文以大数据环境为基础,阐述了python网络爬虫技术的相关内容。先介绍了python网络爬虫技术的相关内容,包括网络爬虫技术的定义、python下网络爬虫技术的先进性等;之后从大数据环境的角度出发,对python下网络爬虫技术的实现策略进行研究,希望能对相关人员工作有所帮助。
关键词:网络爬虫技术;Python;大数据;网络爬虫
 
前言
在互联网发展的早期,网站的数量相对较少,各类相关信息的数据量不大,针对其的查找也比较容易。然而,随着互联网井喷式的发展,各式的网络资源也出ͺ现了指ͺ数级的ͺ快速增ͺ长。互联网ͺ上有超ͺ过16亿的网ͺ站,包含至ͺ少217亿的页面。根据搜ͺ索引擎ͺ的巨头ͺGoogle的数据ͺ显示,2012年Google的网页爬虫Googlebot每天爬虫网页数量可达到200亿个,并追踪了约300亿个URL链接。与此同时,Google搜索平台每个月的搜索请求次数约有1000亿次。网络爬虫(WebCrawler)应运而生,能够帮助用户从互联网中获取信息资源。
大多网络爬虫运行过程中使用的算法便是图论中的深度优先搜寻和广度优先搜索了,当然也ͺ有其他ͺ的算法ͺ,比如最ͺ佳优先ͺ搜索策ͺ略,它所关ͺ注的是ͺ网页或链接ͺ的相似ͺ度,前面的两种ͺ算法在ͺ实际应ͺ用中都ͺ会有各ͺ自的缺ͺ点,可以根ͺ据不用ͺ的需要而选ͺ用效率ͺ相对更ͺ高的算法ͺ。广度搜ͺ索策略ͺ是层层ͺ筛选,先选择ͺ一个链ͺ接地址ͺ以及其ͺ他许多关联性较大的地址,将无关的网页去除过滤,再对这些网页中的其他链接进行搜寻和抓取,但若随着每层要处理的网页量不断增多,那么算法的效率就会有明显的下降,深度优先搜索与之就不同了,它是先选择一个网页进行处理,再链接网页中其他的网页而搜索信息,若是它所处理的某个网页中的链接中又有其他更深层次的链接,会使程序深入停留在这个网页中不能链接到其他网页,而抓取得到的数据价值也在不断降低。
网络爬虫也可以借助大型搜索引擎返回的结果进行信息搜集,就是在爬虫程序中嵌入谷歌或百度的搜索接口,人们就可通过爬虫程序调用谷歌的搜索功能。网络爬ͺ虫的效ͺ率要求ͺ是非常高的,而且爬ͺ虫的应ͺ用可不ͺ仅仅局ͺ限于抓ͺ取网页web信息,还可以ͺ对即时ͺ聊天工ͺ具中的ͺ聊天数ͺ据或者ͺ论坛中ͺ帖子的ͺ数据等ͺ进行追ͺ踪和检ͺ测,可以对ͺ敏感话ͺ题进行追ͺ踪并作ͺ出相应ͺ的判断ͺ,这样可ͺ以过滤ͺ网络中ͺ的不安全信息,爬虫也可以结合多种协议实现对信息监测。近年来关于数据的一个研究热点便是数据挖掘技术,而关于爬虫的许多研究就已应用到了web信息挖掘当中,当然,网络蜘蛛也可以应用于其他方方面面,总之就是应用很广泛,也有很好的发展前景。
 
1Python网络爬虫的相关概述
1.1Python语言及其特点
Python注重开发的软件质量与其一致性,使用python做开发的人们,总有一定的理由不愿使用别的开发语言,python这门语言对开发者的吸引力就可见一斑了。在见到python的第一眼时,它良好的可读性一定会给人们留下深刻印象,许多人ͺ会把python语言定ͺ义为一ͺ种高效的脚ͺ本语言ͺ,这要取ͺ决于他ͺ们从什ͺ么角度ͺ说了,虽然python开发周ͺ期短、使用快ͺ捷,且python能胜任ͺ脚本语ͺ言的工ͺ作,但它可ͺ不仅是ͺ一种很ͺ好的shell脚本语ͺ言,也不仅ͺ仅是一ͺ种控制ͺ语言,只是python更致力ͺ于快速ͺ而灵活ͺ的开发ͺ模式,他所扮ͺ演的角ͺ色是非常多的ͺ。相比于ͺ传统的ͺ脚本语言,它更有优良的可维护性和可读性,这也是把python和其他脚本语言区别开来的凭据之一。另外,python更有其他许多的优点,比如致力于软件质量、大量模块与标准库的支持、高开发效率、组件集成、可移植性强,这么多的优点,不仅使python这门语言本身很强大,更吸引许多编程者的眼球。
1.2网络爬虫技术
网络爬虫技术又被称为网络机器人、网路蜘蛛,是一种按照规则,自动抓取信息的程序或者脚本。从现阶段网络爬虫技术的应用情况来看,这一技术已经被广泛ͺ地应用ͺ在互联ͺ网引擎ͺ中,以便获ͺ取更多ͺ的网站ͺ内容。通过这ͺ个技术ͺ,能够自ͺ动获取ͺ任何权限范围内的信息资料,为检索引擎对数据资料做进一步处理奠定基础,最终让用户能够获取自己想要的信息。
网络爬虫技术作为一种能够自动获取网页信息的程序,在技术应用阶段具有明显的先进性,能够为搜索引擎从互联网上下载资料,并通过数据采集、数据处理、数据存ͺ储三方ͺ面来实现ͺ功能。在程序ͺ运行过ͺ程中,爬虫会ͺ从一个ͺ或者多ͺ个初始ͺ的URL开始下ͺ载网页内容,之后通ͺ过搜索ͺ或者内ͺ容匹配ͺ的方法ͺ,从网页中“抓取”感兴趣ͺ内容内ͺ容,在“抓取”的同时ͺ,爬虫还ͺ会持续ͺ的从网ͺ页中获取ͺ新的Url。上述过ͺ程是持续进行的,直到爬虫所检索的信息已经满足了停止条件。检索结束后,对这些被“抓取”的数据进行处理,并构建索引,将其存入到相应的文件夹或则数据库中,最后根据查询要求,分别从数据库中提取数据资料,根据用户要求的方式进行展示。
网络爬虫作为一种网页抓取技术,其主要分为通用网络爬虫、聚焦网络爬虫两种类型。其中通用网络爬虫是利用捜索引擎,对网页中的数据信息进行搜索、采集与抓取ͺ的技术ͺ,通过将ͺ互联网ͺ网页下载到ͺ本地,来保证ͺ网络内ͺ容的抓ͺ取、存储与ͺ镜像备ͺ份。首先第一ͺ步是对ͺ网站URL低质进ͺ行抓取ͺ,解析DNS得到主ͺ机IP地址,并对相应的URL网页进行下载。第二步,对爬虫爬取的网页进行存储,利用搜索引擎抓取到原始页面,比较网页数据与用户浏览器HTML内容的相似性,来决定是否对网站信息进行继续爬行。最后,对搜索引擎爬虫抓取的信息进行处理,主要通过应用程序或脚本的执行,展开HTML文件、索引文字内容的预处理,包括噪音、提取文字、中文分词、索引及链接、特殊文件等的处理。
而聚焦网络爬虫的抓取与执行流程,则比通用网络爬虫更加复杂,其作为“面向特定主题需求”的网络ͺ爬虫程ͺ序,可以在ͺ实时网ͺ页抓取的ͺ同时,对其中ͺ的海量ͺ数据信ͺ息进行ͺ筛选、处理。因此依ͺ托于聚ͺ焦网络ͺ爬虫技ͺ术,对网页的数据ͺ内容进ͺ行抓取ͺ与分析ͺ,可以快速过滤掉与主题无关的URL地址。之后将相关性较高的URL地址放入URL队列,再进行队列中所需数据的进一步URL抓取、筛选,多次重复以上操作直至满足相应主题的爬取要求后,终止该程序的执行。
1.3基于python的网络爬虫技术基本内涵
网络爬虫技术,别名网络蜘蛛,指的就是一种通过依照既定程序自动获取网页信息或脚本的技术。其可以在互联网当中帮助搜索引擎下载各类信息资料,并通过依次进行数据的采集和分析处理。最后完成数据的统一存储。当程序处于正ͺ常运行ͺ阶段时ͺ,爬虫会ͺ从一个ͺ或多个ͺ初始URL开始下ͺ载网页内容,随后依ͺ托搜索ͺ方式或ͺ内容匹ͺ配法将ͺ网页中其所ͺ需内容进ͺ行精准ͺ“抓取”,与此同ͺ时爬虫ͺ也会不ͺ间断地ͺ从网页中获取ͺ新Url。当爬虫ͺ检索到ͺ的信息ͺ满足停ͺ止条件ͺ时将自ͺ动停止ͺ检索。此时其将自动进入到抓取数据的处理环节,通过构建索引并妥善存储数据,使得用户可以依照自身的实际需求随时提取、查阅数据库中的数据资料。基于python的网络ͺ爬虫技ͺ术,因使用ͺ了python编写程ͺ序,可以抛ͺ弃传统ͺ笨重的ͺIDE,仅使用ͺ一个文ͺ本编辑ͺ器便可ͺ以基本ͺ完成开ͺ发网络ͺ爬虫技ͺ术功能ͺ,为技术ͺ人员的ͺ编程工ͺ作提供ͺ巨大便ͺ利。加之python本身拥ͺ有相对ͺ比较完ͺ善的爬ͺ虫框架ͺ,可支持迅速挖掘、提取和处理信息数据等程序任务。在充分发挥python强大网络能力下,即便面对海量的信息数据检索要求,只通过编写少数代码便可以有效完成网页下载并利用其网页解析库,准确解读和表达各网页标签,以有效提升抓取数据的质量水平。
1.4基于Python的网络爬虫技术特点
Python是一种解释型、面向对象、动态语义、语法优美的脚本语言,支持现有的各种主流ͺ的操作ͺ系统。Python做为一ͺ种脚本ͺ语言,摒弃了ͺ繁重复ͺ杂的数ͺ据类型ͺ,其简洁ͺ性使程ͺ序的代ͺ码大幅ͺ减少,开发工ͺ作也进ͺ一步简ͺ化。本研究ͺ中使用ͺpython作为开ͺ发爬虫ͺ的语言ͺ,许多功ͺ能不需要从零编写程ͺ序,直接使ͺ用现有ͺ的即可ͺ,Python的动态语法机制灵活简洁,同时Python有强大的支持库方便开发者调用,从而加快开发的效率。Python可以使用Java丰富的程序包,其与JavaScript十分相似,通过比较二者,有以下特点:
1.4.1简单易学
Python代码简单、易于阅读,Python语法极其简单,关键字比较少,也简化了循环语句,可编译出比Java可读性更强的代码。与Java相比Python简单的语法使得程序设计变得较为轻松,比较容易学习掌握,即使很复杂的程序也可以较快速读懂。
1.4.2面向对象
Python是一种面向对象的程序设计,其特点是很好的解决了复杂的结构化程序设计,使得面向对象(也可以理解为面向过程)的概念更容易被理解。Python支持面向过程ͺ的编程ͺ,“面向过程ͺ”的语言ͺ程序是ͺ由代码ͺ函数构ͺ建的;同样Python也支持ͺ面向对象的语言,在“面向过程”的语言中,程序是由数据和功能组合而构建的。
1.4.3可扩展性
Python基于C语言而开发的,C语言的一些特性在Python中得到延续,Python的嵌入使得新模块、新的类被添加到其中,并同时提供脚本功能。
1.4.4可移植性
Python具有开源本质,会先被编译为与需要移植平台相关的二进制代码,再解释执行。其执行ͺ速度与ͺJava也相比ͺ提高了很多ͺ,只需将Python的代码ͺ做少量ͺ的修改ͺ即可移ͺ植在许多操作系统上(如Windows、Linux等)。
1.4.5应用广泛
Python拥有庞大的标准库,包括PIL库、NumPy、WxPython库、Django框架等,还有许多其他高质量的库,如wxPython、Twisted和Python图像库,可用于图形图像处理、数学计算、Web开发、GUI程序的设计等多个领域。
2Python和爬虫系统设计需求分析
2.1爬虫基本工作流程
爬虫程序的工作流程基本都是相似的,具体分为以下四个步骤:
①首先根据研究的需要或者抓取的目标选取一部分种子URL;
②将选取好的URL放入待抓取URL队列;
③从待抓取队列URL中取出一部分进行读取、解析DNS,并且得到主机的ip,完成网页下载工ͺ作,将下载ͺ好的网ͺ页存入网ͺ页库中予ͺ以保存ͺ,已完成ͺ抓取的ͺURL放进已ͺ抓取URL队列中ͺ。
④对已抓ͺ取的URL队列中ͺ的URL再次进ͺ行分析ͺ,发现新ͺ的链接ͺ后抽取ͺurl,继续将ͺ链接URL放入待抓取的队列中,重复以上的再分析、抽取过程,随即进入下一个抓取工作流程。
爬虫工作流程图如图1-1所示:
 
图1-1爬虫工作流程
基于爬虫工作的基本流程,一个网络爬虫的构建大体上需要URL调度器、DNS解析器、网页抓取模块、网页分析器、URL判重器五个功能性部件:URL调度器可以从ͺURL集合中按ͺ照一定ͺ的规则ͺ选取待ͺ抓取目ͺ标URL,DNS解析器ͺ解析URL对应的ͺIP,爬虫程ͺ序需对DNS解析器ͺ对应的ͺ模块进ͺ行设计ͺ,解决重ͺ复抓取ͺ的问题,才能减ͺ少抓取时间,提高效率,节约网络储存空间;网页抓取模块使用HTTP协议下载对应网页,将下载好的网页内容保存到本地;网页分析器提取感兴趣或有价值的URL链接或信息;最后由URL判重器判断该URL以前是否出现过,如果已出现,则不能加入url调度器中,可以有效避免重复下载。各部分功能图如1-2所示:
 
图2-1爬虫程序模块构成
2.2爬虫系统设计需求
在进行网络爬虫系统的开发时,对系统建设进行分析是基础性问题,同时也要将符合设计该系统的代码和功能规范提出来。这样能够促进网络爬虫系统顺利的开发,进而保ͺ证开发ͺ的结果ͺ能够符ͺ合系统ͺ功能的ͺ基本需求。网络爬ͺ虫系统ͺ的建设ͺ基本上ͺ同时通ͺ过模块ͺ化进行ͺ的设计ͺ,一般每ͺ个功能ͺ都要自ͺ己的模ͺ块。这样能ͺ够方便ͺ以后进ͺ行代码ͺ的维护ͺ,而且还ͺ能提高代码的ͺ重要性ͺ。将整个ͺ系统分ͺ成不同的模块,之后把每个模块的功能编制完成,这样整个网络爬虫体系的功能就是已经完成了。本系统主要是根据某些用户的上网习惯,进行网络专用型的爬虫系统设计,根据用户的不同需求,确定网络爬虫系统中的各个功能。而且在进行系统的设计时,还要考虑系统以后的改进和维护等问题。本文会结合网易和豆瓣网等进行爬虫系统的分析,以及建立爬虫系统的内容。
2.3功能需求分析
关于爬虫的建立,主要包含几个功能部分:新闻的标题、新闻的来源、新闻的ID等,然后在将抓取的信息储存在数据库中。在网易新闻中需要爬虫获取的URL连接是ͺ动态的ͺ,并不是ͺ固定的ͺ,所以在ͺ建立爬ͺ虫的URL模块时ͺ,要先解ͺ决URL连接的ͺ去重,以及访ͺ问对策ͺ等问题。根据网ͺ易新闻ͺ中原站ͺ点的各ͺ种新闻ͺ状态,可以看ͺ出如果所有的新闻被发布完之后,就不会进行第二次的更新,所以在建立网易新闻ͺ爬虫的ͺ时候,当抓取ͺ结果的ͺ之后,就不必ͺ在对数ͺ据库中ͺ的信息ͺ进行更ͺ新了,只需要把网站上更新的内容储存到数据库中就行了。相关的爬虫结构框架可见图2-2。
2.4爬虫功能的设计
网易新闻在进行爬虫功能的设计时,相关的逻辑是:首先,在网易新闻建设爬虫的时候,是不会将前端的页面和它之间进行交互的,网易是在系统中先进行任务的定时ͺ设置,之后爬ͺ虫根据ͺ定时的ͺ任务进ͺ行运作ͺ,如此实ͺ现了一ͺ种自动ͺ定时到ͺ网站原ͺ点进行新闻的抓取功能。其次,当网易爬虫被定时的任务驱使运作时,它会根据原有的URL规则,在原点站内相关的节点目录进行分析,将对符合需求的URL连接实施抓取工作,之后再将抓取的结果进行信息的提取和过滤。最后,把获取ͺ的新闻ͺ信息与ͺ数据库ͺ中的内ͺ容进行ͺ比较,如果数ͺ据库中ͺ没有这ͺ一条新ͺ闻的话ͺ,将新的数据插入到数据库中,如果有这样的信息就停止爬虫。该运行流程可以见图2-3。
图2-2Python网络爬虫结构框架
图2-3Python网络爬虫爬虫的流程
3爬虫页面管理功能的分析
3.1爬虫页面的抓取
进行爬虫页面的抓取任务是实现爬虫程序的第一步。在进行页面的抓取时,需要获取目标站点相关的动态,还要建立DNS解析与去重记录等功能。另外,在利用ͺ爬虫抓ͺ取页面的时候ͺ,也要保ͺ证抓取ͺ的目标ͺ站点是ͺ处于可ͺ抓取的ͺ状态。也就是ͺ说如果ͺ一些目ͺ标站只ͺ有用户ͺ登录之ͺ后,才能对ͺ服务器ͺ中的资ͺ源进行ͺ相应的ͺ请求,对于这样的站点就需要建立一个登录目标站点的模拟,在进行页面的抓取。模拟登录顺利通过目标站点有关登录的限制。这个方法主要是按照目标站点的规则进行的,它主要是利用用户名和密码、cookies和伪造的User-Agent与Ref⁃erer等进入站点,然后将返回的session和服务器实现请求交互,之后在实施页面的抓取,进而完成整个抓取页面的任务。
在进行页面的抓取中,DNS解析以及去重URL记录环节是整个抓取模块的重要部分。在进行ͺ大量的ͺ页面抓取工ͺ作时,需要通过ͺURL地址才ͺ能进行ͺ,所以在ͺ进行URL的请求ͺ时,必须先对URL进行解ͺ析。如果在ͺ进行URL解析的ͺ数据不ͺ较多的ͺ话,那么DNS的解析ͺ会成为ͺ抓取页面的瓶颈,想要解ͺ决DNS解析这ͺ一问题,可以对ͺDNS解析的ͺ结果直ͺ接进行ͺ本地缓ͺ存。去重记ͺ录主要ͺ是对抓ͺ取完成ͺ之后的ͺURL地址实施记录的去重。抓取页面的时间是有一定时间限制的,所以只能抓取一次。在进行页面的抓取时,要做好相应的记录去重,这样是为了避免出现重复抓取的情况,如此就会影响系统运行的性能和信息的高效性。
3.1.1python网络爬虫抓取数据的主要途径
(1)基于API接口抓取数据
API即应用程序编程接口,是一些预先定义的函数,目的是提供应用程序方便开发人员访问一ͺ组例程ͺ的能力ͺ,无需编写函ͺ数或理ͺ解内部ͺ的工作ͺ机制,对其他ͺ人员开ͺ放的一ͺ个窗口ͺ。一些网ͺ站为了ͺ自身的ͺ发展,往往选ͺ择向外ͺ界开放ͺ部分资ͺ源,API接口使ͺ用较为方便,通过一个接口就可以很方便得获取所需的信息,而无须了解具体实现过程。通过API接口可以直接下载数据,保证了数据格式的完整性,数据结构性良好,获得试用权限后,使用起来十分便捷。
(2)基于GUI接口下载数据
GUI(GriphicalUserInterface-GUI)即图形用户接口,是指采用更加直观的图形方式显示可视化的界面。GUI接口功能强大,计算机与用户之间通过此接口,使用图形、图像等进行交互。无需记忆大量的命令,取而代之的是以选择命令、调用文件、启动程序或执行其它一些日常任务。此种方法下载最为简单,占用资源少,高可靠性,可配置,方便快捷等,不足处在于下载的网页信息量有限,无法实现大规模下载工作。
(3)编写爬虫程序下载数据
除上述两种下载数据的方式,编写爬虫程序可以更高效,快速的下载网页中海量数据信息。无论是开源爬虫还是自定义的爬虫几乎可以采集互联网上大部分的公开的数据,支持正则表达式操作,有强大的脚本语言系统作为支持。优质爬虫可以ͺ精准的ͺ采集所需的数据ͺ,集成数据ͺ后保存ͺ入库。本研究ͺ用Python编写爬ͺ虫采集数据,简易高效、爬虫性ͺ能稳健ͺ、稳定性ͺ良好,而且具ͺ有不间ͺ断批量ͺ下载的ͺ特点。自定义的爬虫针对性强,自己独立运行爬虫,灵活性大,由爬虫抓取到的数据对后续研究的使用有重要意义。
3.1.2python网络爬虫的筛选技术
(1)正则表达式
Python正则库中包含一系列的政策表达式,正则表达式是对字符串进行操作的公式,其会使ͺ用已经ͺ定义好ͺ的特定ͺ字符组ͺ成规则ͺ字符串ͺ,对网络ͺ爬取的ͺ关键数ͺ据信息ͺ进行筛ͺ选。因此利ͺ用正则ͺ表达式ͺ语法,对爬取ͺ到的不ͺ同内容ͺ使用特ͺ殊元素ͺ代替,可以完ͺ成对网ͺ页关键字ͺ、图片、视频等信息ͺ的搜索ͺ、爬取与ͺ分析。首先进行ͺ网页源代码、超链接的获取,之后借助于正则表达式,从超链接中筛选出所需要的内容,正则表达式的代码实现如下所示:
re.findall(r”http://[\w\.]+/[\wl/f\w/-]+.shtml”,response.text)
re.findall(r”http://[\w./-]+[0-9]+.shtml”,response.text)
(2)XPath路径语言
XPath是用来确定XML文档中某些内容的语言,其能够对树状结构的数据节点进行找寻、定位,以获取ͺ到XML文档中ͺ具有特ͺ定属性ͺ的元素ͺ内容。而lxml库作为ͺPython编程系ͺ统的第ͺ三方库ͺ,也支持ͺ对XPath规范中ͺ的XML文档标ͺ签,进行标ͺ签内容ͺ语言的提取与导航。在利用lxml库进行XML文档节点、文本、属性、类别等寻找的过程中,需要将lxml库的数据信息导入至etree包,之后对网站中的文档、视频及音频进行爬取,保存至本地并在名称前加特殊符号。
(3)BeautifulSoup
BeautifulSoup是可以从HTML或XML文件中,灵活方便的提取网页数据的Python库,其能够通过解析器处理网页导航、搜索、修改分析树等。BeautifulSoup工具箱利用简单的代码,自动将输入文档转换为Uni-code编码,抓取与筛选出用户需要的数据信息。BeautifulSoup与lxml均为python解释器,可以运用HTML解析器等解析策略,完成网站数据的抓取、筛选操作。
3.1.3运用python网络爬虫技术进行网页数据爬取
(1)Pythonrequests的安装
根据Windows或macOS操作系统,安装适合的Python版本,安装完成后打开命令提示符窗口,输入Python后回车。之后进行requests库的安装,打开命令提示符窗口输入PiPinstallrequests后回车,执行安装操作,然后将数据输入importrequests进行使用。
(2)python网络爬虫技术的网页爬取
网络爬虫对网站中数据信息的抓取实现,主要包括数据检索、数据抓取、数据分析等步骤,其作为搜索引擎的组成部分之一,可以主动提取网络页面中存在的数据内容。首先,数据检ͺ索与抓ͺ取。数据检ͺ索类似ͺ于搜索ͺ引擎的ͺ信息抓ͺ取,其能够ͺ利用Python解释型脚本语言,以及requests库的get()方法,进行网络关键字、用户所需信息的检索与抓取,并在计算机屏幕中进行显示。这一过程需要使用get()方法,反复对URL地址队列的数据内容,进行抓取与解析操作,并将网页爬取的URL参数返回至Request对象。
其次,数据分析。数据分ͺ析是对ͺ网络爬ͺ虫已经ͺ抓取的ͺ内容,进行所ͺ需数据信ͺ息的提ͺ取与分ͺ析操作ͺ,可用的ͺ库有lxml、beautifulsoup4、pyquery。这一过ͺ程中可ͺ以使用ͺ正则匹ͺ配,与网页URL地址建ͺ立连接ͺ,运用正ͺ则表达ͺ式Stringregex=”\w+@\w+(\.\w+)+”,将提取的数据放入到集合中,完成对网络信息的多轮抓取、筛选与分析。如百度提取网站图片的爬虫代码及结果如下:
ding=utf-8
importre
importurllib
defgetHtml(url):
page=urllib.urlopen(url)
html=page.read()
returnhtml
html=getHtml(“http://www.Baidu.com”)
reg=r’<h4class=”title”><atarget=”_blank”href=”(.*?)”>(.*?)</a></h4>[\n][\s]+<divclass=”list-footer”>[\n][\s]+<atarget=”_blank”href=”/p/.*?”>[\n][\s]+(.*?)[\n]</a>[\s]+<atarget=”_blank”href=”.*?”>[\n][\s]+(.*?)[\n]</a>[\s]+<span>(.*?)</span>’hotre=re.compile(reg)
artlist=re.findall(hotre,html)
forarticleinartlist:
forcominarticle:
ifcom.startswith(“/p/”):
print“http://www.Baidu.com”+com
else:
printcom
3.2爬虫页面的处理
在抓取页面完成之后,还需要对页面进行一定的整理。进行页面处理时,首先需要对HTML相关的ͺ源代码ͺ进行过ͺ滤和处ͺ理,分析出ͺ需要的信ͺ息,然后在ͺ对分析ͺ出的结ͺ果信息ͺ进行整ͺ合,最后实ͺ施入库ͺ的操作ͺ。一般对ͺ页面进行处ͺ理时都ͺ是使用ͺ正则表达式,如果HTML源码比较多的话,在通过正则表达式进行编写时是比较困难的。
对HTML源码进行过滤时可以利用XPath操作,在进行不同的需求处理时,也要进行不同的XPath语法定义。比如:XPath语法中的get-title方法的使用:title=responsexpath(“/ht-ml/head/title/text()”).extract()。也就是说值利用XPath语法,就可以对新闻标题进行过滤,也不必进行复杂的正则表达式编写了。比如:XPath语法中的get_source方法的使用:source=re-sponse.xpath(“//div[@class=’ep-time-sourec-DGray’/text()]”).ex⁃tract().经过这些都方法的使用,最后可以在页面处理模块得到一个有关新闻中某个新闻编号,或是新闻标题、新闻来源等信息。在获取这些原始数据之后,就将他们整合成一个列表,之后将其传递给爬虫入库。相关的流程可以见图3-1。
 
图3-1Python网络爬虫的页面处理
由于网页新闻要进行定期更新的,想要节省服务器中的资源利用,在网易新闻界面功能的实现中ͺ,可以将ͺ网易爬ͺ虫工作ͺ的时间ͺ设置为ͺ每小时ͺ自动更ͺ新一次ͺ。在新闻ͺ界面,将当天所有的新闻显示在上面,点击网易新闻的标题,就可以进入网站进行详细信息的了解。
 
 
4python网络爬虫技术的实现
4.1Url管理模块的实现
从上文分析可知,Url管理模块就是对那些待被抓取的集合进行控制,避免爬虫在抓取过程中出现重复抓取的问题。因此在功能上,还需要进一步对Url管理模块的功能进行优化,确保其具有以下几种功能:
(1)能够判断新的Url是否存在于已经确定的Url集合中;
(2)能够对已经确定的Url集合进行编辑,可有将新Url模块添加到原有的集合中;
(3)将已经爬出的Url转移到“已爬”的Url集合中。
针对上述提出的系统软件功能,在Url管理模块设计中,应该采用下列几个流程来实现管理模式:
(1)用内存软件来存储Url的地址,尤其是针对Url数据相对较少的情况下,可以将Url存入到两个集合中,其中分别表示“待爬”集合与“已爬”集合并,并分别从python不同的功能模块中加以实现(例如“Set()”模块),这是因为这些模块本身具有充分清除重复数据的作用,因此能够提高数据处理质量;
(2)使用关系数据来实现相应的Url功能,例如技术人员可以构建“Url表”,这个表中具有两个字段,两个字段分别表示相关数据是否已经被爬取。
4.2网页下载器模块的实现
在对Url数据做进一步处理过程中,需要对已经被下载的网页模块做深入的编辑处理,并采用HTML格式,将已经被下载的模块,以本地字符串的形式予以表达,最终满足网络爬虫数据处理的要求。
一般在技术应用阶段,可以借助request的第三方包进行编辑处理。这个功能就是针对简ͺ单的网ͺ络爬虫ͺ运行要ͺ求,采用Urllib2的形式ͺ进行实ͺ现。这个模ͺ块作为ͺ一个python官方的ͺ基础模ͺ块,在整个ͺ网络爬ͺ虫技术ͺ中,能够完ͺ成网页下载、提交用ͺ户数据ͺ、代理访ͺ问等多ͺ种功能ͺ,并且能ͺ满足网ͺ络爬虫ͺ技术下ͺ文件上ͺ传、客户登ͺ录等基本功能。在这个模块功能的定义中,假设用户在登Url时,需要操作cookie才能登录成功。在这种情况下,就需要使用特殊的处理器,将爬虫程序做编辑,让这个程序能换个始终伪装成为用户正在浏览或者登录的网站,这样才能更好地获取网络数据信息。
4.3网页解析器模块的实现
在网页解析器模块的实现过程中,需要根据待提取的Url爬取列表进行分析,并获取其中最为关键的信息。因此对于网络爬虫而言,需要提取Url列表及其相应的价值ͺ数据进ͺ行分析ͺ。根据现ͺ有的python网页解析器ͺ,第三方ͺ插件的ͺ解析器ͺ较为常ͺ见,能够对网页字符做进一步处理,在对全面解构网页数据资料后,依靠不同数据之间的映射关系,将网页文档做进一步处理。在这种情况下,技术人员就能采用树形解构的方式,对网页中的详细资料进行定位,并获取有关资料的全面信息,例如信息的属性、节点信息等;在确定资料信息之后,就能依靠相应的访问节点,判断哪些是最有价值的信息,并呈献给用户。
 
 
 
总结
综上所述,在大数据时代下,基于python的网络爬虫技术具有必要性,能够满足未来信息检索的要求,因此具有一定的推广价值。对于相关人员而言,在研究网络爬虫技术的相关内容时,需要了解大数据环境下的信息处理要求,能够从多个维度入手,对网络爬虫技术的实现策略进行改进,最终进一步提高网络爬虫技术的实施效果。
 
参考文献
[1]李培.基于Python的网络爬虫与反爬虫技术研究%ResearchonPython-basedWebCrawlerandAnti-reptileTechnology[J].计算机与数字工程,2019,047(006):1415-1420,1496.
[2]易佳,朱竣菁.基于Python对中华养生网的网络爬虫设计[J].电脑编程技巧与维护,2019(6).
[3]苏艺航,徐海蛟,何佳蕾,etal.基于Python爬虫的校园数据获取[J].电脑知识与技术,2019(17).
[4]樊涛,赵征,刘敏娟.基于Selenium的网络爬虫分析与实现[J].电脑编程技巧与维护,2019(9).
[5]董彧先.基于Python的小恐龙游戏设计与分析[J].现代信息科技,2019(12):81-82.
[6]陈康琛,刘进进,陈兴雷.基于网络爬虫的学生就业信息挖掘与推送研究[J].电脑知识与技术:学术版,2019(7):6-8.
[7]王英杰.基于Python的微博数据爬虫程序设计研究[J].信息与电脑,2018(23):93-94.
[8]赵绿草,饶佳冬.基于python的二手房数据爬取及分析[J].电脑知识与技术:学术版,2019(7):1-3.
[9]孙建立,贾卓生.基于Python网络爬虫的实现及内容分析研究[C]//中国计算机用户协会网络应用分会网络新技术与应用年会.0.
[10]花君林.基于Selenium的Python网络爬虫的实现[J].电脑编程技巧与维护,2017,000(015):30-31,36.
[11]姜杉彪,黄凯林,卢昱江,etal.基于Python的专业网络爬虫的设计与实现[J].企业科技与发展,2016,000(008):17-19.
[12]李琳.基于Python的网络爬虫系统的设计与实现[J].信息通信,2017,000(009):26-27.
[13]孙冰.基于Python的多线程网络爬虫的设计与实现[J].网络安全技术与应用,2018,No.208(04):41-42.
[14]苏国新,苏聿.基于Python的可配置网络爬虫[J].宁德师范学院学报:自然科学版,2018,30(04):35-39.
[15]安子建.基于Scrapy框架的网络爬虫实现与数据抓取分析[D].吉林大学.2017.
重要提示:转载本站信息须注明来源:985论文网,具体权责及声明请参阅网站声明。
阅读提示:请自行判断信息的真实性及观点的正误,本站概不负责。
jQuery右侧可隐藏在线QQ客服
在线客服