基于Scrapy的数据爬取方法、终端设备及计算机可读存储介质与流程

文档序号:18475485发布日期:2019-08-20 20:59阅读:134来源:国知局
本发明涉及数据爬取
技术领域
:,尤其涉及一种基于scrapy的数据爬取方法、终端设备及计算机可读存储介质。
背景技术
::随着信息社会的快速发展,互联网上的数据越来越多,为获取有用信息,目前常常通过网络爬虫技术爬取有用数据。现有爬虫技术中,基于scrapy的爬虫框架的使用过程中,对于多个网站的爬取要重复编写代码;在编写代码过程中,除了需要分析代码的逻辑,还需要解析网页的规则,会影响网页规则的正确率;另外,scrapy爬虫框架功能开关及注意点过于分散,分布在各个层级下的文件中,在使用scrapy爬虫框架爬取数据的过程,很有可能会出现漏洞。因此基于scrapy框架的使用过程中,存在爬取数据的效果比较差的问题。技术实现要素:有鉴于此,本发明提出一种基于scrapy的数据爬取方法、终端设备及计算机可读存储介质,以解决基于scrapy框架的使用过程中,存在爬取数据的效果比较差的问题。首先,为实现上述目的,本发明提出一种基于scrapy的数据爬取方法,该方法包括步骤:在爪哇脚本对象简谱json文件中对基于scrapy框架的爬虫文件的配置参数进行定义;对所述json文件进行命名,创建爬虫文件,并将所述爬虫文件的名称按照所述json文件的名称进行命名;将所述json文件的配置参数导入所述爬虫文件;运行导入配置参数后的爬虫文件,爬取网页数据。可选地,所述在爪哇脚本对象简谱json文件中对基于scrapy框架的爬虫文件的配置参数进行定义的步骤包括:在所述json文件中对所述爬虫文件中各个层级的配置参数进行定义,其中,所述爬虫文件的层级包括爬取器、引擎、调度器、下载器、实体管道、默认配置层级、下载中间件、及爬取中间件。可选的,所述运行导入配置参数后的爬虫文件,爬取网页数据的步骤包括:通过所述爬虫文件的引擎从所述导入配置参数后的爬虫文件中获取起始url,并且将获取的url提交到调度器中;在需要从url中下载数据的情况下,所述调度器将url通过引擎提交给下载器,所述下载器根据url下载待爬取数据。可选地,所述在爪哇脚本对象简谱json文件中对基于scrapy框架的爬虫文件的配置参数进行定义的步骤包括:在爪哇脚本对象简谱json文件中对基于scrapy框架的爬虫文件的起始网站名、起始网站主页、请求头、基于分布式文件存储的数据库的uri地址、数据库名及集合名进行定义;对跟进网页链接的预处理进行定义;对首页的预处理、起始页的类型、允许域名、跟进的链接函数名、待爬取数据的变量名及匹配方式进行定义,其中,所述匹配方式包括xml路径语言选择器、层叠样式表选择器、及正则表达式。可选地,所述运行导入配置参数后的爬虫文件,爬取网页数据的步骤包括:通过xml路径语言选择器爬取数据;在所述xml路径语言选择器未爬取到数据的情况下,通过层叠样式表css选择器爬取数据;在所述层叠样式表选择器未匹配到数据的情况下,通过正则表达式爬取数据。可选地,所述将所述json文件的配置参数导入所述爬虫文件的步骤包括:在中断命令行接收预先设置的启动命令,根据接收到的启动命令,将所述json文件的配置参数导入所述爬虫文件。可选地,所述将所述json文件的配置参数导入所述爬虫文件的步骤包括:在爬虫scrapy配置文件的同级目录下基于爬虫python语言定义启动文件;通过所述启动文件将所述json文件中的配置参数导入所述scrapy文件。可选地,所述通过所述启动文件将json文件中的配置参数导入所述scrapy文件的步骤包括:从所述启动文件获取所述爬虫文件的名称;确定与所述爬虫文件的名称具有相同名称的json文件,从所述确定的json文件中获取对应的配置参数;将所述获取到的配置参数合并到所述scrapy文件的默认配置文件中。此外,为实现上述目的,本发明还提供一种终端设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的基于scrapy的数据爬取系统,所述基于scrapy的数据爬取系统被所述处理器执行时实现如上述的基于scrapy的数据爬取方法的步骤。进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有基于scrapy的数据爬取系统,所述基于scrapy的数据爬取系统可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于scrapy的数据爬取方法的步骤。相较于现有技术,本发明所提出的基于scrapy的数据爬取方法、终端设备及计算机可读存储介质,能够通过json文件定义scrapy文件的配置参数,不同爬虫项目只需要定义一份不同json文件即可,json文件集合了一个爬虫文件所需的配置文件,无需到爬虫文件的各个层级下进行参数配置及功能修改,提高代码编写效率,降低漏洞数量,提高爬取网页数据的效果。附图说明图1是本发明终端设备一可选的硬件架构的示意图;图2是本发明基于scrapy的数据爬取系统第一实施例的程序模块示意图;图3是本发明基于scrapy的数据爬取系统第二实施例的程序模块示意图;图4是本发明基于scrapy的数据爬取方法第一实施例的流程示意图;图5是本发明基于scrapy的数据爬取方法第二实施例的流程示意图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。参阅图1所示,是本发明终端设备2一可选的硬件架构的示意图。本实施例中,所述终端设备2可包括,但不仅限于,可通过系统总线相互通信连接存储器11、处理器12、网络接口13。需要指出的是,图1仅示出了具有组件11-13的终端设备2,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,终端设备可以以各种形式来实施。例如,本发明中描述的终端设备可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、便捷式媒体播放器(portablemediaplayer,pmp)、导航装置、可穿戴设备、移动终端、计步器等移动终端,以及诸如数字tv、台式计算机等固定终端。后续描述中将以终端设备为例进行说明,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端设备。所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述终端设备2的内部存储单元,例如该终端设备2的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述终端设备2的外部存储设备,例如该终端设备2上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器11还可以既包括所述终端设备2的内部存储单元也包括其外部存储设备。本实施例中,所述存储器11通常用于存储安装于所述终端设备2的操作系统和各类应用软件,例如基于scrapy的数据爬取系统200的程序代码等。此外,所述存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。所述处理器12在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述终端设备2的总体操作。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行所述的基于scrapy的数据爬取系统200等。所述网络接口13可包括无线网络接口或有线网络接口,该网络接口13通常用于在所述终端设备2与其他电子设备之间建立通信连接。至此,己经详细介绍了本发明相关设备的硬件结构和功能。下面,将基于上述介绍提出本发明的各个实施例。首先,本发明提出一种基于scrapy的数据爬取系统200。参阅图2所示,是本发明基于scrapy的数据爬取系统200第一实施例的程序模块图。本实施例中,所述基于scrapy的数据爬取系统200包括一系列的存储于存储器11上的计算机程序指令,当该计算机程序指令被处理器12执行时,可以实现本发明各实施例的基于scrapy的数据爬取操作。在一些实施例中,基于该计算机程序指令各部分所实现的特定的操作,基于scrapy的数据爬取系统200可以被划分为一个或多个模块。例如,在图2中,所述基于scrapy的数据爬取系统200可以被分割成定义模块201、命名模块202、导入模块203、爬取模块204。其中:所述定义模块201,用于在爪哇脚本对象简谱json文件中对基于scrapy框架的爬虫文件的配置参数进行定义。在本实施例中,爪哇脚本对象简谱(javascriptobjectnotation,json),是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,具有简洁和清晰的层次结构特点,易于阅读和编写,同时也易于机器解析和生成。所述命名模块202,用于对所述json文件进行命名,创建爬虫文件,并将所述爬虫文件的名称按照所述json文件的名称进行命名。举例来说,可以将所述json文件命名为spidername,创建爬虫文件,并将爬虫文件命名为spidername。补充说明的是,创建的爬虫文件包括爬取器、引擎、调度器、下载器、实体管道、默认配置层级、下载中间件、及爬取中间件。补充说明的是,爬取器的英文名可以为spider、引擎的英文名可以为enginge、调度器的英文名可以为scheduler、下载器的英文名可以为download、实体管道的英文名可以为itempipeline、默认配置层级的英文名可以为setting、下载中间件的英文名可以为downloadmiddleware、及爬取中间件的英文名可以为spidermiddleware。所述导入模块203,用于将所述json文件的配置参数导入所述爬虫文件。在本实施例中,可以通过运行启动文件,触发启动将所述json文件中的配置参数导入爬虫文件。所述爬取模块204,用于运行导入配置参数后的爬虫文件,爬取网页数据。在本实施例中,在导入配置参数后,爬虫文件可以确定需要爬取的特定数据,从而快速从指定网站上爬取到需要爬取的特定数据。例如,在导入配置参数后,爬虫文件确定需要爬取关于张三的数据,并在指定的第一网站爬取所有与张三有关的数据。参阅图3所示,是本发明基于scrapy的数据爬取系统200第二实施例的程序模块图。本实施例中,所述的基于scrapy的数据爬取系统200包括定义模块201、命名模块202、导入模块203、爬取模块204,所述爬取模块204还包括:获取子模块2041及下载子模块2042。其中:所述定义模块201,用于在爪哇脚本对象简谱json文件中对基于scrapy框架的爬虫文件的配置参数进行定义。在本实施例中,爪哇脚本对象简谱(javascriptobjectnotation,json),是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,具有简洁和清晰的层次结构特点,易于阅读和编写,同时也易于机器解析和生成。具体的,所述定义模块201,还用于在所述json文件中对所述爬虫文件中各个层级的配置参数进行定义,其中,所述爬虫文件的层级包括爬取器、引擎、调度器、下载器、实体管道、默认配置层级、下载中间件、及爬取中间件。在本实施例中,爬取器主要用于解析响应,并从中提取需要抓取的项目,即提取需要抓取的数据。下载中间件位于引擎和下载器层级之间的特定钩子,使用下载中间件可以达到以下目的:在将请求发送到下载器之前处理请求;在传递给爬取器之前改变接收到的响应;发送新的请求,而不是将接收到的响应传递给爬取器;向爬取器传递响应而不需要获取网页。实体管道负责处理被爬取器提取的实体,典型的任务包括清理,验证和持久性,其中,持久性包括将爬取的数据存储在数据库中。引擎负责控制系统所有组件之间的数据流,并在发生某些操作时触发事件。调度器调度程序接收来自引擎的请求,并将它们排入队列,并在之后,当引擎需要的时候,将请求发送给引擎。下载器负责提取网页并将它们馈送到引擎,然后引擎将其发送给爬取层级。具体的,所述定义模块201,还用于在爪哇脚本对象简谱json文件中对基于scrapy框架的爬虫文件的起始网站名、起始网站主页、请求头、基于分布式文件存储的数据库的uri地址、数据库名及集合名进行定义;对跟进网页链接的预处理进行定义;对首页的预处理、起始页的类型、允许域名、跟进的链接函数名、待爬取数据的变量名及匹配方式进行定义,其中,所述匹配规则包括xml路径语言选择器、层叠样式表选择器、及正则表达式;所述xml路径语言选择器可以简称为xpath选择器,所述层叠样式表选择器可以简称为css选择器。其中,请求头即为请求报头域,包括cache、client、cookie/logh、entity、miscellaneous、transport等头域分类,对应的作用可参考头域作用说明,在此不做赘述。在网页界面中包括可以点击继续跟进的链接,例如,当爬虫获取到news.baidu.com页面时,点击在news.baidu.com页面上的跟进链接,可以继续打开跟进链接对应的网页。所述命名模块202,用于对所述json文件进行命名,创建爬虫文件,并将所述爬虫文件的名称按照所述json文件的名称进行命名。举例来说,可以将所述json文件命名为spidername,创建爬虫文件,并将爬虫文件命名为spidername。补充说明的是,创建的爬虫文件包括爬取器、引擎、调度器、下载器、实体管道、默认配置层级、下载中间件、及爬取中间件。所述导入模块203,用于将所述json文件的配置参数导入所述爬虫文件。在本实施例中,可以通过运行启动文件,触发启动将所述json文件中的配置参数导入爬虫文件。具体的,所述导入模块203,还用于在中断命令行接收预先设置的启动命令,根据接收到的启动命令,将所述json文件的配置参数导入所述爬虫文件。举例来说,所述启动命令可以为pythonrun.pyspidername,在中断命令行接收到pythonrun.pyspidername后,爬虫文件调用scrapyuniversal/utils.py中的get_config()函数,通过get_config()函数启动对爬虫文件的配置信息的解析。其中,python是运行以py结尾的文件命令,run.py是启动文件,spidername是定义的json文件名,与json文件名为spidername对应爬虫文件的文件名为spidername。这样,直接在中断命令行输入pythonrun.pyspidername启动命令,即可启动爬虫文件。其中,pythonrun.pyspidername区别于传统的scrapycrawlspidername的启动方式,可以提高启动效率。具体的,所述导入模块203包括:定义子模块,用于在爬虫scrapy配置文件的同级目录下基于爬虫python语言定义启动文件;导入子模块,用于通过所述启动文件将所述json文件中的配置参数导入所述scrapy文件。具体的,所述导入子模块包括:获取单元,用于从所述启动文件获取所述爬虫文件的名称;确定单元,用于确定与所述爬虫文件的名称具有相同名称的json文件,从所述确定的json文件中获取对应的配置参数;合并单元,用于将所述获取到的配置参数合并到所述scrapy文件的默认配置文件中。在本实施例中,scrapy配置文件的同级目录包括以下几个层级:爬取器、引擎、调度器、下载器、项目管道、默认配置层级、下载中间件、爬取中间件,只需要在爬虫scrapy文件的scrapy.cfg层级定义一个启动命令run.py即可,无需在各个层级下分别定义启动命令run.py。补充说明的是,还在默认配置层级中,对机器人robots协议的注意点进行设置,将robotstxt-obey=ture,改成false。其中,默认配置层级是scrapy框架的默认配置文件。进一步补充说明的是,引擎用来处理整个系统的数据流处理,触发事务,为框架核心。调度器,用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回;可以想像成一个url,即抓取网页的网址或者说是链接的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址。下载器,用于下载网页内容,并将网页内容返回给蜘蛛scrapy。爬取器,用于从特定的网页中提取需要的信息,需要的信息即所谓的实体。用户也可以从中提取出链接,继续抓取下一个页面。项目管道,负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。下载中间件处理的过程,主要在调度器发送requests请求时、以及网页将response结果返回给spiders时,用于修改scrapyrequest和response。爬取器中间件与下载中间件类似,只不过spider中间件处理的是即将发往爬取器处理的响应对象,以及从爬取器返回的响应对象或item对象。爬虫中间件是一个scrapy的spider处理机制的钩子框架,可以插入自定义的功能用来处理引擎发往爬取器的响应请求和爬取器发往引擎的request请求和实体。这样,不同的网站项目可以同一份爬虫代码,不要重新创建工程project和爬虫文件,只需要定义不同的json文件即可。所述爬取模块204,用于运行导入配置参数后的爬虫文件,爬取网页数据。在本实施例中,在导入配置参数后,爬虫文件可以确定需要爬取的特定数据,从而快速从指定网站上爬取到需要爬取的特定数据。例如,在导入配置参数后,爬虫文件确定需要爬取关于张三的数据,并在指定的第一网站爬取所有与张三有关的数据。具体的,所述爬取模块204还包括:获取子模块2041,用于通过所述爬虫文件的引擎从所述导入配置参数后的爬虫文件中获取起始url,并且将获取的url提交到调度器中;爬取子模块2042,用于在需要从url中下载数据的情况下,所述调度器将url通过引擎提交给下载器,所述下载器根据url下载待爬取数据。在本实施例中,引擎会获取爬虫文件中的起始url,并且将url提交到调度器中。如果需要从url中下载数据,则调度器会将url通过引擎提交给下载器,下载器根据url去下载指定内容,即下载响应体。下载好的数据会通过引擎移交给爬虫文件,爬虫文件可以将下载的数据进行指定格式的解析。如果解析出的数据需要进行持久化存储,则爬虫文件会将解析好的数据通过引擎移交给管道进行持久化存储。在本实施例中,url可以为政府、企业的网址。这样,可以快速爬取网站数据,并将爬取的数据进行下载及存储备份。具体的,所述爬取模块204,还用于通过xml路径语言选择器爬取数据;在所述xml路径语言选择器未爬取到数据的情况下,通过层叠样式表选择器爬取数据;在所述层叠样式表选择器未匹配到数据的情况下,通过正则表达式爬取数据。在本实施例中,xpath全称为xmlpathlanguage,也就是xml路径语言,是一种在结构化文档中定位信息的语言,其中,结构化文档可以为xml和html文档。使用xpath路径表达式来选取xml文档中的节点或节点集。节点是通过沿着路径(path)或者步(steps)来选取的。层叠样式表选择器包括通配符选择器、元素选择器、class选择器、id选择器、ef后代选择器、多元素选择器、向量兄弟选择器等。正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串,将匹配的子串替换或者从某个串中取出符合某个条件的子串等。这样,通过多种匹配方式从网页匹配待爬取的数据,可以提高获取有用数据的成功率。此外,本发明还提出一种基于scrapy的数据爬取方法。参阅图4所示,是本发明基于scrapy的数据爬取方法第一实施例的流程示意图。在本实施例中,根据不同的需求,图4所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。该方法包括以下步骤:步骤s400,在爪哇脚本对象简谱json文件中对基于scrapy框架的爬虫文件的配置参数进行定义。在本实施例中,爪哇脚本对象简谱(javascriptobjectnotation,json),是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,具有简洁和清晰的层次结构特点,易于阅读和编写,同时也易于机器解析和生成。步骤s402,对所述json文件进行命名,创建爬虫文件,并将所述爬虫文件的名称按照所述json文件的名称进行命名。举例来说,可以将所述json文件命名为spidername,创建爬虫文件,并将爬虫文件命名为spidername。补充说明的是,创建的爬虫文件包括爬取器、引擎、调度器、下载器、实体管道、默认配置层级、下载中间件、及爬取中间件。补充说明的是,爬取器的英文名可以为spider、引擎的英文名可以为enginge、调度器的英文名可以为scheduler、下载器的英文名可以为download、实体管道的英文名可以为itempipeline、默认配置层级的英文名可以为setting、下载中间件的英文名可以为downloadmiddleware、及爬取中间件的英文名可以为spidermiddleware。步骤s404,将所述json文件的配置参数导入所述爬虫文件。在本实施例中,可以通过运行启动文件,触发启动将所述json文件中的配置参数导入爬虫文件。步骤s406,运行导入配置参数后的爬虫文件,爬取网页数据。在本实施例中,在导入配置参数后,爬虫文件可以确定需要爬取的特定数据,从而快速从指定网站上爬取到需要爬取的特定数据。例如,在导入配置参数后,爬虫文件确定需要爬取关于张三的数据,并在指定的第一网站爬取所有与张三有关的数据。参阅图5所示,是本发明基于scrapy的数据爬取方法的第二实施例的流程图。本实施例中,所述的基于scrapy的数据爬取方法的步骤s500-s506与第一实施例的步骤s400-s406相类似,区别在于该方法还包括步骤s508-510。该方法包括以下步骤:步骤s500,在爪哇脚本对象简谱json文件中对基于scrapy框架的爬虫文件的配置参数进行定义。在本实施例中,爪哇脚本对象简谱(javascriptobjectnotation,json),是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,具有简洁和清晰的层次结构特点,易于阅读和编写,同时也易于机器解析和生成。具体的,该步骤s500还包括以下步骤:在所述json文件中对所述爬虫文件中各个层级的配置参数进行定义,其中,所述爬虫文件的层级包括爬取器、引擎、调度器、下载器、实体管道、默认配置层级、下载中间件、及爬取中间件。在本实施例中,爬取器主要用于解析响应,并从中提取需要抓取的项目,即提取需要抓取的数据。下载中间件位于引擎和下载器层级之间的特定钩子,使用下载中间件可以达到以下目的:在将请求发送到下载器之前处理请求;在传递给爬取器之前改变接收到的响应;发送新的请求,而不是将接收到的响应传递给爬取器;向爬取器传递响应而不需要获取网页。实体管道负责处理被爬取器提取的实体,典型的任务包括清理,验证和持久性,其中,持久性包括将爬取的数据存储在数据库中。引擎负责控制系统所有组件之间的数据流,并在发生某些操作时触发事件。调度器调度程序接收来自引擎的请求,并将它们排入队列,并在之后,当引擎需要的时候,将requests请求发送给引擎。下载器负责提取网页并将它们馈送到引擎,然后引擎将其发送给爬取层级。具体的,该步骤s500还包括以下步骤:在爪哇脚本对象简谱json文件中对基于scrapy框架的爬虫文件的起始网站名、起始网站主页、请求头、基于分布式文件存储的数据库的uri地址、数据库名及集合名进行定义;对跟进网页链接的预处理进行定义;对首页的预处理、起始页的类型、允许域名、跟进的链接函数名、待爬取数据的变量名及匹配方式进行定义,其中,所述匹配规则包括xml路径语言选择器、层叠样式表选择器、及正则表达式;所述xml路径语言选择器可以简称为xpath选择器,所述层叠样式表选择器可以简称为css选择器。其中,请求头即为请求报头域,包括cache、client、cookie/logh、entity、miscellaneous、transport等头域分类,对应的作用可参考头域作用说明,在此不做赘述。在网页界面中包括可以点击继续跟进的链接,例如,当爬虫获取到news.baidu.com页面时,点击在news.baidu.com页面上的跟进链接,可以继续打开跟进链接对应的网页。步骤s502,对所述json文件进行命名,创建爬虫文件,并将所述爬虫文件的名称按照所述json文件的名称进行命名。举例来说,可以将所述json文件命名为spidername,创建爬虫文件,并将爬虫文件命名为spidername。补充说明的是,创建的爬虫文件包括爬取器、引擎、调度器、下载器、实体管道、默认配置层级、下载中间件、及爬取中间件。步骤s504,将所述json文件的配置参数导入所述爬虫文件。在本实施例中,可以通过运行启动文件,触发启动将所述json文件中的配置参数导入爬虫文件。具体的,步骤s504还包括以下步骤:在中断命令行接收预先设置的启动命令,根据接收到的启动命令,将所述json文件的配置参数导入所述爬虫文件。举例来说,所述启动命令可以为pythonrun.pyspidername,在中断命令行接收到pythonrun.pyspidername后,爬虫文件调用scrapyuniversal/utils.py中的get_config()函数,通过get_config()函数启动对爬虫文件的配置信息的解析。其中,python是运行以py结尾的文件命令,run.py是启动文件,spidername是定义的json文件名,与json文件名为spidername对应爬虫文件的文件名为spidername。这样,直接在中断命令行输入pythonrun.pyspidername启动命令,即可启动爬虫文件。其中,pythonrun.pyspidername区别于传统的scrapycrawlspidername的启动方式,可以提高启动效率。具体的,步骤s504还包括以下步骤:在爬虫scrapy配置文件的同级目录下基于爬虫python语言定义启动文件;通过所述启动文件将所述json文件中的配置参数导入所述scrapy文件。具体的,所述通过所述启动文件将所述json文件中的配置参数导入所述scrapy文件还包括以下步骤:从所述启动文件获取所述爬虫文件的名称;确定与所述爬虫文件的名称具有相同名称的json文件,从所述确定的json文件中获取对应的配置参数;将所述获取到的配置参数合并到所述scrapy文件的默认配置文件中。在本实施例中,scrapy配置文件的同级目录包括以下几个层级:爬取器、引擎、调度器、下载器、项目管道、默认配置层级、下载中间件、爬取中间件,只需要在爬虫scrapy文件的scrapy.cfg层级定义一个启动命令run.py即可,无需在各个层级下分别定义启动命令run.py。补充说明的是,还在默认配置setting层级中,对机器人robots协议的注意点进行设置,将robotstxt-obey=ture,改成false。其中,默认配置层级是scrapy框架的默认配置文件。进一步补充说明的是,引擎用来处理整个系统的数据流处理,触发事务,为框架核心。调度器,用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回;可以想像成一个url,即抓取网页的网址或者说是链接的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址。下载器,用于下载网页内容,并将网页内容返回给蜘蛛scrapy。爬取器,用于从特定的网页中提取需要的信息,即所谓的实体。用户也可以从中提取出链接,继续抓取下一个页面。项目管道,负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。下载中间件处理的过程,主要在调度器发送requests请求时、以及网页将response结果返回给spiders时,用于修改scrapyrequest请求和response响应。爬取器中间件与下载中间件类似,只不过爬取器中间件处理的是即将发往爬取器处理的响应对象,以及从爬取器返回的响应对象或实体对象。爬虫中间件是一个scrapy的spider处理机制的钩子框架,你可以插入自定义的功能用来处理引擎发往爬取器的响应和爬取器发往引擎的响应和实体。这样,不同的网站项目可以同一份爬虫代码,不要重新创建工程和爬虫文件,只需要定义不同的json文件即可。步骤s506,通过所述爬虫文件的引擎从所述导入配置参数后的爬虫文件中获取起始url,并且将获取的url提交到调度器中。步骤s508,在需要从url中下载数据的情况下,所述调度器将url通过引擎提交给下载器,所述下载器根据url下载待爬取数据。在本实施例中,引擎会获取爬虫文件中的起始url,并且将url提交到调度器中。如果需要从url中下载数据,则调度器会将url通过引擎提交给下载器,下载器根据url去下载指定内容,即下载响应体。下载好的数据会通过引擎移交给爬虫文件,爬虫文件可以将下载的数据进行指定格式的解析。如果解析出的数据需要进行持久化存储,则爬虫文件会将解析好的数据通过引擎移交给管道进行持久化存储。在本实施例中,url可以为政府、企业的网址。这样,可以快速爬取网站数据,并将爬取的数据进行下载及存储备份。补充说明的是,在图4所示实施例的步骤406还可以包括以下步骤:通过xml路径语言选择器爬取数据;在所述xml路径语言选择器未爬取到数据的情况下,通过层叠样式表选择器爬取数据;在所述层叠样式表选择器未匹配到数据的情况下,通过正则表达式爬取数据。在本实施例中,xpath全称为xmlpathlanguage,也就是xml路径语言,为一种在结构化文档中定位信息的语言,其中,结构化文档可以为比xml和html文档。xpath使用路径表达式来选取xml文档中的节点或节点集。节点是通过沿着路径(path)或者步(steps)来选取的。css选择器包括通配符选择器、元素选择器、class选择器、id选择器、ef后代选择器、多元素选择器、向量兄弟选择器等。正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串,将匹配的子串替换或者从某个串中取出符合某个条件的子串等。这样,通过多种匹配方式从网页匹配待爬取的数据,可以提高获取有用数据的成功率。本实施例提供的基于scrapy的数据爬取方法,能够通过json文件定义scrapy文件的配置参数,不同爬虫项目只需要定义一份不同的json文件即可,json文件集合了一个爬虫文件所需的配置文件,无需到爬虫文件的各个层级下进行参数配置及功能修改,提高代码编写效率,降低漏洞数量,提高爬取网页数据的效果。本发明还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有基于scrapy的数据爬取程序,所述基于scrapy的数据爬取程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于scrapy的数据爬取方法的步骤。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,终端设备,空调器,或者网络设备等)执行本发明各个实施例所述的方法。以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
:,均同理包括在本发明的专利保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1