一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据采集方法、装置、电子设备及存储介质与流程

2022-05-06 10:45:22 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,具体涉及一种数据采集方法、装置、电子设备及存储介质。


背景技术:

2.目前,越来越多企业通过招投标方式进行商情挖掘与市场拓展,据统计,全网有上万个站点发布招投标相关数据,而如何有效监控这些站点,帮助企业实时推送最新的招投标信息,是提高企业商情挖掘能力的一个关键要素。
3.相关技术中,是对所有站点进行逐个解析,编写一个个对应的采集程序,而解析站点是一个非常耗时繁琐的过程,要达到可以监控全网的目的,需要投入大量的人力和时间成本,数据采集效率很低。


技术实现要素:

4.本发明的目的是针对上述现有技术的不足提出的一种数据采集方法、装置、电子设备及存储介质,该目的是通过以下技术方案实现的。
5.本发明的第一方面提出了一种数据采集方法,所述方法包括:获取针对网站的配置文件;将所述配置文件中的第一个请求参数作为当前请求参数,,并利用当前请求参数并按照所述配置文件中设置的请求结构生成网络请求,通过预先设置的代理池中间件使用代理地址替换所述网络请求中的实际原地址;向所述网站发送替换地址后的网络请求,并接收所述网站返回的网页数据并存储;判断所述配置文件中是否存在下一个请求参数;若存在,则将下一个请求参数作为当前请求参数,并返回执行利用当前请求参数并按照所述配置文件中设置的请求结构生成网络请求的过程。
6.本发明的第二方面提出了一种数据采集装置,所述装置包括:获取模块,用于获取针对网站的配置文件;采集模块,用于将所述配置文件中的第一个请求参数作为当前请求参数,并利用当前请求参数并按照所述配置文件中设置的请求结构生成网络请求;通过预先设置的代理池中间件使用代理地址替换所述网络请求中的实际原地址;向所述网站发送替换地址后的网络请求,并接收所述网站返回的网页数据并存储;判断模块,用于判断所述配置文件中是否存在下一个请求参数;跳转模块,用于在判断存在时,将下一个请求参数作为当前请求参数,并返回执行利用当前请求参数并按照所述配置文件中设置的请求结构生成网络请求的过程。
7.本发明的第三方面提出了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一方面所述
方法的步骤。
8.本发明的第四方面提出了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述第一方面所述方法的步骤。
9.基于上述第一方面和第二方面所述的数据采集方法及装置,本发明至少具有如下有益效果或优点:本方案基于配置化完成网站采集,减少了重复编写程序的环节,因此节省了人力成本,采集人员根据目标网站的网络协议规则,编写出相应的配置文件,进而通过获取到配置文件,完全基于网络协议接口的方式实现网站采集,极大提高了数据采集的效率,并且经过简单的环境配置便可以将配置文件导入运行在任意的操作系统中实现数据采集。
10.此外,在向目标网站发送网络请求之前,通过代理池中间件修改网络请求中的实际原地址,可以达到每次的网络请求都来自不同地址,从而绕过目标网站的ip检测机制。
附图说明
11.此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1为本发明根据一示例性实施例示出的一种数据采集方法的实施例流程图;图2为本发明示出的一种网络请求结构示意图;图3为本发明示出的一种网页数据解析构成图;图4为本发明示出的一种列表页解析得到的数据列表示意图;图5为本发明根据一示例性实施例示出的一种数据采集装置的结构示意图;图6为本发明根据一示例性实施例示出的一种电子设备的硬件结构示意图图;图7为本发明根据一示例性实施例示出的一种存储介质的结构示意图。
具体实施方式
12.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。
13.在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
14.应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
15.目前,市场上已有的采集框架有八爪鱼、火车头等采集软件,但是这些采集软件均是基于浏览器的,采集的性能和效率达不到大量网站的采集需求,而且对能运行的操作系统也有限。
16.为了解决上述技术问题,本技术提出一种数据采集方法,通过获取针对网站的配置文件,然后将配置文件中的第一个请求参数作为当前请求参数,并利用当前请求参数并按照配置文件中设置的请求结构生成网络请求,通过预先设置的代理池中间件使用代理地址替换网络请求中的实际原地址,并向网站发送替换地址后的网络请求后,接收网站返回的网页数据并存储,接着判断配置文件中是否存在下一个请求参数,若存在,则将下一个请求参数作为当前请求参数,并返回执行利用当前请求参数向网站发起网络请求的过程。
17.基于上述描述可达到的技术效果有:本方案基于配置化完成网站采集,减少了重复编写程序的环节,因此节省了人力成本,采集人员根据目标网站的网络协议规则,编写出相应的配置文件,进而通过获取到配置文件,完全基于网络协议接口的方式实现网站采集,极大提高了数据采集的效率,并且经过简单的环境配置便可以将配置文件导入运行在任意的操作系统中实现数据采集。
18.此外,在向目标网站发送网络请求之前,通过代理池中间件修改网络请求中的实际原地址,可以达到每次的网络请求都来自不同地址,从而绕过目标网站的ip检测机制。
19.为了使本领域技术人员更好的理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
20.实施例一:图1为本发明根据一示例性实施例示出的一种数据采集方法的实施例流程图,该数据采集方法包括如下步骤:步骤101:获取针对网站的配置文件。
21.其中,配置文件是采集人员根据要采集网站的数据请求方式、网页的html标签布局、网页数据的渲染方式等规则编写出的json配置。然后该配置文件被导入到指定任务队列中,从而按照一定顺序从任务队列中依次取出配置文件进行数据采集。
22.基于此,通过从指定任务队列中获取一个配置文件,通过将配置文件放在队列中按照一定顺序进行数据采集,可以避免遗漏配置文件的问题。
23.需要注意的是,指定任务队列中针对每个要采集的网站存有一个配置文件。
24.步骤102:将配置文件中的第一个请求参数作为当前请求参数。
25.其中,通常一个网站服务器上存有多个网页,因此配置文件中需要设置每一网页的请求参数,并且各个网页之间存在一定的跳转关联关系,因为配置文件中各个网页的请求参数按照一定的顺序进行排列,所以首次请求是利用配置文件中的第一个请求参数进行数据采集。
26.步骤103:利用当前请求参数并按照配置文件中设置的请求结构生成网络请求,并通过预先设置的代理池中间件使用代理地址替换网络请求中的实际原地址后,向所述网站发送替换地址后的网络请求,并接收所述网站返回的网页数据并存储。
27.在执行步骤103之前,为了更好的实现数据采集,本发明基于爬虫框架scrapy进行,并利用scrapy框架提供的中间件方法,对网络请求发起之前或者请求返回之后对数据进行修改。在本发明中,预设设置有代理池中间件、渲染器中间件、文本编码转换中间件、以及请求重试中间件。
28.其中,代理池中间件用来为每次网络请求前将实际原ip地址替换为代理ip地址,以达到每次的网络请求都来自不同ip地址,从而绕过目标网站的ip检测机制。渲染器中间
件是用于处理一些异步加载的网站,通过模拟浏览器运行网络请求,并将返回的网页数据渲染在网页上,然后返回渲染后的网页数据,这样就可以得到和网页上所看到的数据,即所见即可爬。文本编码转换中间件是用于灵活替换返回的网页数据的编码格式,因为每个网页的文本编码格式都不一定是相同的,所以常常会出现部分网站因为编码格式转换不对导致返回的数据为乱码,常见的文本编码格式有utf8、unicode、gbk等,所文本编码转换中间件是用来识别出返回数据的编码格式,并将其转换成统一的编码格式,防止出现乱码的情况。请求重试中间件是用于处理请求超时或一些异常错误的情况,请求超时主要是因为使用了代理ip,代理ip的网络状况是未知的,所以发起网络请求会出现超时的问题,当然除了超时,也会出现某些请求返回的数据不正确,导致程序异常,这两种情况都是需要重试直到返回正确数据。
29.基于上述预设设置的代理池中间件、渲染器中间件、文本编码转换中间件、以及请求重试中间件,下面通过具体实施例对这些中间件的使用进行说明。
30.如图2所示,网络请求的结构主要包括:请求头headers、请求地址url、请求体参数body、请求方式get/post。其中,headers表示网络请求的网络协议头,与目标地址的网络协议头一致;url可以填入三个参数,value为目标网页url地址或者是ajax接口地址,re可以填入正则表达式,process中可以编写一些处理函数,用来处理一些url的拼接或替换,从value里匹配指定的值,将匹配的值用于在process中处理;一般招标类网站的请求方式都为get方式或post方式,当请求方式为get时,body为空,当请求方式为post时,需要携带目标网站指定的body。
31.进一步地,在向所述网站发送替换地址后的网络请求之后,还可以通过预先设置的请求重试中间件检测是否存在请求超时或返回数据异常情况,若存在,则在确定重试次数小于预设阈值时,将重试次数加1,并重新执行利用当前请求参数并按照所述配置文件中设置的请求结构生成网络请求的过程。
32.针对接收所述网站返回的网页数据并存储的过程,在一种可能的实现方式中,可以通过预先设置的文本编码转换中间件将所述网站返回的网页数据的编码格式转换为预设编码格式,进而利用配置文件中的解析规则对编码格式转换后的网页数据进行解析,并存储经解析后的网页数据。
33.其中,预设编码格式为按照实际解析需求统一要求的编码格式。
34.需要说明的是,网站上的网页(如招标网站)总体上分为列表页和详情页两个类别,两个类别的网页结构几乎一样,只是列表页通常多一个字段。
35.基于此,针对利用配置文件中的解析规则对转换后的网页数据进行解析的过程,可以判断转换后的网页数据是否包含预设字段,若包含预设字段,则利用配置文件中的列表页解析规则对网页数据进行解析,若不包含预设字段,则利用配置文件中的详情页解析规则对网页数据进行解析。
36.其中,预设字段为根据实际网站分析出的用来区分列表页数据与详情页数据的字段,例如列表页比详情页多一个li字段,可以将该字段设置为预设字段。
37.在具体实施时,如图3所示的列表页解析构成图,首先利用xpath路径表达式、css选择器表达式、正则表达式、json格式中的一种表达式对网页数据中表示li字段的数据进行解析,并利用process中自定义的处理函数方法进行指定的处理并返回一个数据列表。
38.如图4所示的数据列表,数据列表中的每一个data可以对应多个item元素,每个item元素对应有value、field_name两个字段的数据。其中,value为使用item_loader机制对item进行解析填充的值,field_name为该item元素代表的字段名,列如:item1代表标题,则field_name填写为title,item2代表时间,则field_name填写为date。
39.其中,item_loader机制具体为每个item元素的预处理方法,其根据item元素的field_name进行相对应的处理方法,当field_name为date时,将会在value里找出时间格式的数据,当field_name为title时,会将value里的空白字符去掉。由此可知,具体字段的处理方法可以在item_loader中自定义。
40.需要注意的是,上述给出的列表页解析过程中除了li字段解析方式之外,其他的解析过程均适用于详情页的解析。
41.在另一种可能的实现方式中,针对步骤103的过程,还可以通过预先设置的渲染器中间件利用模拟浏览器运行网络请求并渲染返回的网页数据,并利用渲染后的网页数据存储。
42.步骤104:判断配置文件中是否存在下一个请求参数,若不存在,则继续返回步骤101,若存在,则执行步骤105。
43.在实际分析过程中发现,大部分网站需要从列表页跳转到详情页即完成一次数据的收集,但也有小部分网站不需要跳转到详情页即完成一次数据的收集,如:网站数据通过ajax接口返回当前页面所有文章的全部数据,也有部分网站需要跳转多次才能到达文章详情页的页面,因此根据实际要采集的网站在编写配置文件时,对于需要多次跳转页面完成数据采集的网站,会按照跳转顺序配置多层请求的请求参数,对于不需要跳转页面完成数据采集的网站,只配置一层请求的请求参数即可。
44.在一具体实施例中,可以通过回调函数(callback)回调下一个请求参数,如果回调函数输出回调成功结果,则确定配置文件存在下一个请求参数;如果回调函数输出回调失败结果,则确定配置文件不存在下一个请求参数。
45.步骤105:将下一个请求参数作为当前请求参数,并返回执步骤103的过程。
46.需要说明的是,对于每层请求的请求参数均符合上述图2所示的网络请求结构的要求。
47.至此,完成上述图1所示的采集流程,本方案基于配置化完成网站采集,减少了重复编写程序的环节,因此节省了人力成本,采集人员根据目标网站的网络协议规则,编写出相应的配置文件,进而通过获取到配置文件,完全基于网络协议接口的方式实现网站采集,极大提高了数据采集的效率,并且经过简单的环境配置便可以将配置文件导入运行在任意的操作系统中实现数据采集。
48.此外,在向目标网站发送网络请求之前,通过代理池中间件修改网络请求中的实际原地址,可以达到每次的网络请求都来自不同地址,从而绕过目标网站的ip检测机制。
49.与前述数据采集方法的实施例相对应,本发明还提供了数据采集装置的实施例。
50.图5为本发明根据一示例性实施例示出的一种数据采集装置的结构示意图,该装置用于执行上述任一实施例提供的数据采集方法,如图5所示,该数据采集装置包括:获取模块510,用于获取针对网站的配置文件;采集模块520,用于将所述配置文件中的第一个请求参数作为当前请求参数,并利
用当前请求参数并按照所述配置文件中设置的请求结构生成网络请求;通过预先设置的代理池中间件使用代理地址替换所述网络请求中的实际原地址;向所述网站发送替换地址后的网络请求,并接收所述网站返回的网页数据并存储;判断模块530,用于判断所述配置文件中是否存在下一个请求参数;跳转模块540,用于在判断存在时,将下一个请求参数作为当前请求参数,并返回执行利用当前请求参数并按照所述配置文件中设置的请求结构生成网络请求的过程。
51.在一种可能的实现方式中,所述获取模块510,具体用于从指定任务队列中获取一个配置文件。
52.在一种可能的实现方式中,所述装置还包括(图5中未示出):重请求模块,用于在向所述网站发送替换地址后的网络请求之后,通过预先设置的请求重试中间件检测是否存在请求超时或返回数据异常情况;若存在,则在确定重试次数小于预设阈值时,将所述重试次数加1,并重新执行利用当前请求参数并按照所述配置文件中设置的请求结构生成网络请求的过程。
53.在一种可能的实现方式中,所述判断模块530,具体用于通过回调函数回调下一个请求参数;如果所述回调函数输出回调成功结果,则确定所述配置文件存在下一个请求参数;如果所述回调函数输出回调失败结果,则确定所述配置文件不存在下一个请求参数。
54.在一种可能的实现方式中,所述采集模块520,具体用于在接收所述网站返回的网页数据并存储过程中,通过预先设置的文本编码转换中间件将所述网站返回的网页数据的编码格式转换为预设编码格式;利用所述配置文件中的解析规则对编码格式转换后的网页数据进行解析,并存储经解析后的网页数据。
55.在一种可能的实现方式中,所述采集模块520,具体用于在利用所述配置文件中的解析规则对转换后的网页数据进行解析过程中,判断所述转换后的网页数据是否包含预设字段;若包含预设字段,则利用所述配置文件中的列表页解析规则对所述网页数据进行解析;若不包含预设字段,则利用所述配置文件中的详情页解析规则对所述网页数据进行解析。
56.在一种可能的实现方式中,所述采集模块520,具体用于通过预先设置的渲染器中间件利用模拟浏览器运行所述网络请求并渲染返回的网页数据,并利用渲染后的网页数据存储。
57.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
58.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
59.本发明实施方式还提供一种与前述实施方式所提供的数据采集方法对应的电子设备,以执行上述数据采集方法。
60.图6为本发明根据一示例性实施例示出的一种电子设备的硬件结构图,该电子设
备包括:通信接口601、处理器602、存储器603和总线604;其中,通信接口601、处理器602和存储器603通过总线604完成相互间的通信。处理器602通过读取并执行存储器603中与数据采集方法的控制逻辑对应的机器可执行指令,可执行上文描述的数据采集方法,该方法的具体内容参见上述实施例,此处不再累述。
61.本发明中提到的存储器603可以是任何电子、磁性、光学或其它物理存储装置,可以包含存储信息,如可执行指令、数据等等。具体地,存储器603可以是ram(random access memory,随机存取存储器)、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。通过至少一个通信接口601(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
62.总线604可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器603用于存储程序,所述处理器602在接收到执行指令后,执行所述程序。
63.处理器602可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器602中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器602可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。
64.本技术实施例提供的电子设备与本技术实施例提供的数据采集方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
65.本技术实施方式还提供一种与前述实施方式所提供的数据采集方法对应的计算机可读存储介质,请参考图7所示,其示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的数据采集方法。
66.需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存 (pram)、静态随机存取存储器 (sram)、动态随机存取存储器 (dram)、其他类型的随机存取存储器 (ram)、只读存储器 (rom)、电可擦除可编程只读存储器 (eeprom)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
67.本技术的上述实施例提供的计算机可读存储介质与本技术实施例提供的数据采集方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
68.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的
权利要求指出。
69.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
70.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献