蔡迪阳
(广东创新科技职业学院 广东东莞 523960)
网络信息技术的发展虽然在很大程度上改变了人们的生活,但在发展中产生的大量数据也对信息的获取提出了更高的要求。基于网络环境的数据信息获取需要保证数据的质量,才能将其应用到各个行业和领域的发展当中。尽管人工智能技术能够在一定程度上提升筛选和获取数据信息的效率,但实际产生的工作量仍比较大。从Python 语言的角度,对网页信息爬取技术进行分析,能够为网页信息数据的获取和应用提供一定的思路。
Python 语言是一种基于计算机的高级数据结构,能够以更为简单、有效的方式来面对对象编程。基于Python语言解释器易于扩展、语言简洁方便的特点,在伴随Python语言版本的不断更新和添加新语言功能的背景下,Python 语言逐渐成为当前计算机和网络信息技术发展中不可缺少的技术内容。具体而言,Python语言首先具有可读性功能,能够以更高级的脚本语言效率来支持海量数据的分析挖掘,且相对于以往应用的脚本语言,Python语言的门槛更低,能够以简化的工作流程来更好地满足企业和社会组织在数据分析挖掘工作中的需求[1]。其次,Python语言还具有灵活的开发模式,能够基于数据分析的要求来开发形成多个不同的程序版本,也更便于对整个系统编程进行维护。除此之外,Python 语言还具有模块数量多、支持标准库、良好的可移植性以及组件集成等应用优势,能够更好地满足现阶段不同行业和领域对数据信息深入挖掘和分析的要求,因而逐渐成为编程人员的首要选择。
网络爬虫主要是一种能够依据一定的规则,对目标网页中的数据进行下载管理,满足用户对网页数据应用需求的一种技术。在网络信息技术得到快速发展的背景下,网络爬虫技术水平也逐渐提高。用户对网络数据信息的获取需求逐渐提高,在网络信息技术不断更新迭代的情况下,网络爬虫的爬取技术也在不断发展,现阶段,用户已经能够直接依据爬取技术获取网络数据。
1.2.1 Scrapy库
从本质上来说,Scrapy库是一个应用框架,可支持爬取网站数据和提取网站结构性数据的功能,一般包括引擎、调度器、下载器、爬虫以及管道这5 种基本的组件。为方便研究,文章中重点对Scrapy 库中的下载器进行分析,依靠下载器能够实现对网页数据的抓取。在爬取过程中,只需要通过指定基于网页数据相应的URL,下载器就可以在自动抓取相应的内容之后,将内容放置到item 当中,而用户在基于自身需求对获取的数据信息进行处理之后,Scrapy 框架还能够对数据进行封装和下载。应用这种获取网页信息数据的方式,能够有效缩短软件编写需要的时间,提高效率[2]。在Scrapy 框架应用的过程中,往往需要应用引擎系统来满足数据通信和信号传递的要求;调度器系统主要负责在数据下载之后发送管理请求并返还数据;爬虫能够对返回数据请求进行处理,以便能够提取用户需要的数据,并将这些数据交换引擎之后再次输入调度器当中。
1.2.2 Scrapy框架运作程序
网页数据爬取技术的应用,需要建立在拥有明确目标网站的基础上。在获取目标网站之后,被处理的爬虫会被发送给引擎系统,由引擎系统调度器来向数据信息中加入请求,在调度器完成对数据信息的处理之后再将其送回到引擎当中。而经过请求分析之后,数据信息会被传送到下载器当中,用于下载网页数据相关的信息[3]。如果在这个过程中出现下载失败的情况,Scrapy 框架中的引擎系统会在自动保留数据之后将其传回调度器,再次重复以上步骤,直到完成所有下载之后,再进行相关数据的下载。
1.2.3 状态码检测分析
为保证网页爬虫爬取数据的准确性和效率,往往需要在应用爬取技术之前对爬虫软件进行检测。在这个对软件进行检测的过程中,如果需要以构建URL的方式来进行数据信息的请求,通常需要伴随着针对请求状态码的检测分析。这主要是因为部分网站本身处于封闭IP 的模式下,在爬取网站信息时,往往需要对返回reponse 的状态码进行分析[4]。需要注意的是,在这个对状态码进行检测分析的过程中,需要忽视Scrapy框架体系,但如果处于Scrapy库模式下,则通常需要让状态码能够达到200~300的请求再对数据进行处理分析。同时,在检测分析中还需要手动添加与数据信息相关的代码,才能够判断网页是否处于稳定的状态,从而实现对网页相关数据的抓取分析。
1.2.4 录取展示
录取展示主要是基于Scrapy框架在获取网页数据信息之后,对数据信息进行存储和处理的MYSQL数据库而言的,该数据库本身能够作为一个管理系统运行,能够以较小的体积空间和较快的运行速度来满足读取网页数据和展示应用的要求。同时,该数据库的研发成本也比较低,能够通过开放源代码的方式被应用到各类中小型网站当中,能够呈现出明显的应用优势[5]。文章在对网页信息爬取技术进行研究时,也选择这一数据库作为Scrapy 框架体系的运行支持,在具体分析中,基于PyMySQL 驱动来将网页数据与数据库系统链接起来,从而将从网页中读取的数据展示在数据库系统界面当中,能够更直观地向用户展现网页数据的具体内容,以便能够从中获取到有价值的信息。
网页数据爬取技术的应用,最主要的目的就是获取目标网页中对于用户有价值的数据信息。但对于网站本身而言,爬取技术的应用很容易影响到网站的运营情况,因而在爬取技术不断发展的情况下,各大网站的反爬虫机制也在逐渐完善。尽管当前广泛应用的爬虫框架与工具能够满足大部分用户对于网页信息的获取需求,但受到反爬虫机制的限制,爬取技术在实际应用中仍然存在着一定的问题[6]。文章主要从Python 语言的角度,将Python作为编写爬取技术的主要软件,应用Python中较为成熟的库来应对爬取技术应用中存在的问题,致力于开发一个更简单、操作更便捷、效率更高的爬取软件。
基于网络信息技术和爬虫技术的发展,目前能够应用于实际的爬虫技术能够为此次设计提供丰富的经验。结合以往爬取技术的应用情况来看,在进行目标网站爬虫设计时,最主要的就是对Web 网页中的数据内容资源进行分析,从中明确想要获取的数据信息。在这一阶段,一般需要在对整个网页的结构和内容进行综合分析之后,从中选取有价值的数据内容资源。从网络空间数据的角度来看,网络空间中拥有的数据质量是用户能够对数据信息的有效性进行衡量的主要依据,也是后续能够应用数据进行分析的重要前提。因而在数据分析中保证数据分类和整理的高效性和高质量,对提高数据信息获取的准确性具有重要的作用。而考虑到网页数据的数量巨大,且数据结构较为复杂,为降低冗余信息对后续数据分析的影响,可以通过建立网络空间数据资料库的方式,在抓取数据并对数据进行归类分析之后,从某个维度或多个维度建立这些数据信息之间的关联,让数据能够同时具有多个维度。
在收集数据的过程中,对于数据信息的选择,就可以直接将维度信息作为选择的依据。如果在收集数据的过程中发现维度信息与数据之间不存在明显的相关性,就可以直接在这一阶段将相关数据删除。在进行数据采集的过程中,为保证采集数据信息的唯一性,还需要在对数据进行初步筛选的阶段过滤重复的数据信息。也就是说,在网站提供的信息可能存在多个时效性展示数据的情况下,应用最新的有效性信息覆盖原来的旧数据信息,能够以初步保证数据唯一性的方式,提高对数据信息进行筛选和处理的效率。在保证数据的采集规范标准统一后,还需要按照初步规范的内容对网页数据进行定向采集。基于当前各大网站在数据信息呈现方面的共同点,在设置网页数据的爬取方向时,主要包括分类信息爬取、商品页信息爬取、评论页信息爬取、相关offer 信息爬取以及经营者信息爬取这5 个方面。在实际分析获取网页数据时,可以具体选择其中一个方向来获取指定的信息数据。
获取Web 数据资源从本质上来说是一个对网页数据信息进行初步筛选的过程,尽管初步筛选已经能够淘汰大量冗余繁杂的数据信息,但获取的数据资源量仍较大。为了能够达到爬取网页数据信息的目的,在获取Web 数据资源之后,还需要基于Python 语言搭建一个Scrapy 工程,以Scrapy 工程拥有的数据收集功能来实现对网页数据资源的进一步处理分析。通过前面的分析可以发现,Scrapy项目的构建较为简单,只需要在确认需要爬取的目标网站信息之后,基于Scrapy内置的脚手架命令来搭建项目运行所需要的框架。在框架生成后,能够依据命令生成自定义的爬虫文件,然后运行Scrapygenspide.com 的命令,在输入需要爬取数据的目标网站网址之后,就会依据程序中的通用爬虫模板自动生成自定义的爬虫类目标,然后向界面填入允许爬取的域名属性,就可以构建一个完整的爬虫项目。
在原有Scrapy 工程的基础上,向其中加入Python语言,能够让Scrapy 工程体现出更明显的易用性和高封装性。这主要是因为在搭建Scrapy 工程的过程中,用于抓取网页数据的策略以广度网页优先级为主,能够通过直接抓取未开放下载的网页资源链接的方式,将网页资源直接存放到URL 搜索队列的网页末尾数据中,整个过程无须对网站进行屏蔽处理。这样做的好处就是大大简化爬虫项目整体的操作难度,在简化项目搭建前期流程的同时,也能够大大提高基于爬虫项目的网页数据开发效率。
网站经营方为保护网页数据信息的安全,通常会设置反爬虫机制来应对爬虫技术的应用。反爬虫机制主要是指一种能够对用户行为进行分析的反爬虫技术,该技术能够通过对用户访问行为的检测来判断其是否存在爬虫行为。当用户使用的IP 在短时间内向同一网页页面的信息发送多次访问请求,或在短时间内多次重复请求更改IP,会给网站服务器的运行造成较大的负载压力,因而可以依据这一特点来判断用户是否拥有爬虫的行为特征。
为验证网站拥有的反爬虫机制是否会对一般情况下的爬虫行为产生影响,在开发设计基于Python 语言的网页信息爬取技术之前,先运行一般的爬虫技术。选取某网站为主要实验对象,在实验的过程中发现,当爬取网页数据的数量在几百条左右的情况下,会弹出较多类似“404”的非正常状态码。而在再次进入网站之后,发现因获取网页数据而产生的异常行为已被网站察觉。如果想要获取正常的网站页面,只能够通过登录来进行。由此可知,在出现这种情况时,证明网站已经能够检测出爬虫的脚本程序,且应用了爬虫技术的用户IP 在浏览特性方面与正常用户之间存在着一定的差异,因而服务器在检测出异常行为之后,会自动将拥有异常行为的用户IP封禁。
为规避网站的反爬虫机制,在基于Python 语言设计网页数据爬虫项目时,可以尝试应用决策树算法来提高爬虫的下载性能,从而有效达到规避反爬虫机制的目的。决策树算法是一种典型的分类算法,该算法能够依据获取的近邻数据集来构建一个基于数据信息的训练模型,在模型中寻找k个最小的近邻之后,就可以将其作为获取新的建模数据的实例。决策树算法中,上层节点或决定下层节点的分布情况,在依据决策树算法来对关键词整体相关度的度量进行计算时,主要应用式(1)来进行。
式(1)中,Qinc代表整体相关的,B和C主要代表网页的不同内容分词,k代表权值个数,Y代表不同权值所在的位置。当基于网页数据拥有K个值的情况下,分类标签更多的部分就是数据分类的最终结果。
在应用决策树算法的基础上,还需要应用性能评估方法来验证爬虫技术的有效性。一般情况下,爬虫技术的搜索性能越好,在应用技术时能够下载的页面范围也就越广,而判断爬虫搜索性能的标准是在规定的时间内获得的下载量。基于这一前提,应用性能评估方法,能够基于平均数的单一网页文件来评估爬虫项目的搜索性能。具体而言,在应用性能评估方法的过程中,首先能够对使用的爬虫是否能够满足算法应用和数据分类的要求进行分析。网站应用性能评估方法也能够对存在异常行为的用户进行屏蔽。
考虑到网站应用的反爬虫机制,当http 发送请求时,一般会包含请求的头部信息,而反爬虫机制在这个过程中可以基于头部信息来对用户是否存在非法访问行为进行判断。正常用户在浏览网页的过程中,由数据请求产生的头部信息往往会携带浏览器的标识信息,表明该用户的访问行为是由浏览器发起的。这种识别异常行为的反爬虫机制主要应用于静态网站中。而在动态网页中,网站经营者通常会选择动态页面技能,用JavaScript语言来动态生成网页的数据信息。由于网站对Ajax 请求参数和网站的接口层进行了加密,使得参数的语义和可读性被去除。在这种情况下,即便应用爬虫技术获取到了信息,往往也难以获取详细的信息。为了能够规避反爬虫机制对爬虫技术产生的影响,在实际应用爬虫技术时,可以借助伪装网站信息数据来请求头部信息,用以规避反爬虫机制对用户访问行为的检测。而考虑到网站大部分情况下的数据信息请求量都比较大,在应用爬虫技术时,可以事先准备一个浏览器头部信息的列表,以便能够为后续对网站进行数据信息获取和访问的请求分配不同的请求头部。这样能够让网站的反爬虫机制认为用户请求是由多个浏览器启动的,且在应用爬虫技术抓取数据的过程中,Web 服务器也能够将爬虫数据请求确识别为浏览器的常规请求,从而有效达到规避网站本身反爬虫机制的目的。
在获取Web数据资源并编写Scrapy工程并保证爬虫行为不会受到网站反爬虫机制影响之后,就可以基于Python语言来编写网站的爬虫程序并下载数据。相较于以往应用的编程方法而言,应用Python语言之后,无论是应用开源网站的爬虫还是自定义资源的爬虫,都能够对目标网页中的数据信息进行自动收集和分析。考虑到当前互联网中拥有的公共资源数据基本都能够以多脚本语言系统作为支撑,且在网页数据本身应用加密算法的情况下,往往需要应用更优质的数据爬虫引擎来获取到目标网页的数据信息,并在将获得的数据信息整合之后储存到数据库当中。
具体而言,在基于Python语言编写爬虫程序时,首先需要进入目标网页界面,在爬取目标数据信息之后,进入网页offer信息爬取的子流程当中。在进入子流程之后,一般分为是否存在经营者ID 两种情况:如果存在,则需要直接进入评论信息进一步爬取子流程;如果不存在,则需要进入经营者信息界面爬取子流程。在爬取子流程信息后,就可以对爬取的信息进行整理,并依据规范的格式将数据信息输出。结合现阶段大型网站的运营情况来看,在多渠道网站数据信息的背景下,爬取技术中拥有的数据分析功能非常重要,在基于Python 语言编写爬取程序时,可以借助Python 语言直接应用爬虫软件来对网页中的批量数据进行收集,这样能够大大提高网页数据获取的效率,而爬虫本身稳定的性能也能保证批量数据下载的准确性。且相对于以往应用的爬取技术而言,基于Python 语言的爬虫软件拥有更强的针对性和更大的灵活性,能够以简化的编程结构形式来达到获取网页数据信息的目的。而Python 语言在这个过程中主要应用的是动态类型系统,这种系统能够体现开源软件的性质,在将数据信息编译成二进制源代码之后,可以通过解释器来执行具体的数据分析请求。这种系统的运行速度要明显高于以往爬取技术应用的Java 系统,也能搭配Numpy 库、wxPython库等优质软件库来使用。
在开发设计基于Python语言的网页信息爬取技术之后,可以将其应用到实际的网页数据获取当中,通过配置调试、实现过程以及数据分析这3 个阶段来实现对网页数据进行实时抓取的要求。以电子商务网站为例,在程序配置调试阶段,由于大多数电子商务网站对商品信息的分类较为详细,在应用Scrapy 框架对商品数据信息进行爬取的同时,也能够借助该框架应用事件来响应数据信息的访问和获取请求。在实际获取数据过程中,可以依次获取上层目录信息,然后以解析函数回调的方式来处理每个目录的链接。在实现过程阶段,可以基于事先确定好的爬虫技术实现步骤来验证网页数据信息的获取结果,并将获取的数据信息储存在相应的系统数据库当中。在数据分析阶段,一般需要从自然语言情感和基础统计的角度,对数据进行统计分析。例如:在电子商务网站中,往往需要依据商品信息的评价等级来区分商品的正面或负面信息,然后依据自然语言处理领域的朴素贝叶斯分类器来训练一个适用于电子商务网站的分类器,以此来对商品评论中的关键词进行分析。
综上所述,应用了Python 语言的网页信息爬取技术,能够有效满足基于用户需求深入挖掘网页数据信息的需求,能够以深入开发利用各类数据信息的方式为用户提供各种信息服务。基于Python语言开发设计的网页信息爬取技术在实际应用中存在着一定的问题,为保障技术应用的效率,可以应用决策树算法来对系统程序进行优化,从而有效达到深入挖掘和爬取网页信息的目的。