CN108984375B - 一种内容抓取方法、装置、***以及存储介质 - Google Patents
一种内容抓取方法、装置、***以及存储介质 Download PDFInfo
- Publication number
- CN108984375B CN108984375B CN201810549611.XA CN201810549611A CN108984375B CN 108984375 B CN108984375 B CN 108984375B CN 201810549611 A CN201810549611 A CN 201810549611A CN 108984375 B CN108984375 B CN 108984375B
- Authority
- CN
- China
- Prior art keywords
- configuration information
- layer
- content
- test script
- test
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种内容抓取方法、装置、***以及存储介质。所述方法包括:服务器管理层获取抓取内容的配置信息,并将所述配置信息发送至业务逻辑层;业务逻辑层轮询更新所述服务器管理层发送的配置信息,并将更新的配置信息发送至通用通信控制层;通用通信控制层根据所述配置信息生成的测试脚本,并根据通用网络驱动协议将所述测试脚本发送至应用执行层;应用执行层接收并解析所述测试脚本,并调用与解析结果匹配的原生测试框架对解析结果执行抓取操作。
Description
技术领域
本发明属于互联网技术领域,尤其涉及一种内容抓取方法、装置、***以及存储介质。
背景技术
当前社会正处于移动互联网蓬勃发展的时期,在移动互联网中存在大量有价值的内容,例如博客内容、微博内容、微信公众号内容、朋友圈内容、APP页面内容、网站内容等等。在使用移动互联网过程中,用户通过点击、滑动、文本输入等与移动终端进行交互的手段获取上述内容。然而,随着移动互联网平台的多样化,和用户对于抓取信息需求量的提高,如何对自动、高效、容错率高地对来源于互联网的内容进行抓取成为了值得研究的问题。
发明内容
为了解决上述技术问题,本发明提出了一种客户端性能测试方法、装置以及终端。
本发明的一方面,提供一种内容抓取方法,所述方法包括:服务器管理层获取抓取内容的配置信息,并将所述配置信息发送至业务逻辑层;业务逻辑层轮询更新所述服务器管理层发送的配置信息,并将更新的配置信息发送至通用通信控制层;通用通信控制层根据所述配置信息生成的测试脚本,并根据通用网络驱动协议将所述测试脚本发送至应用执行层;应用执行层接收并解析所述测试脚本,并调用与解析结果匹配的原生测试框架对解析结果执行抓取操作。
本发明的另一方面,提供一种内容抓取方法,所述方法包括:轮询更新抓取内容的配置信息;生成所述配置信息的测试脚本;通过通用网络驱动协议将所述测试脚本转化为统一资源定位符;发送所述统一资源定位符。
本发明的另一方面,提供一种内容抓取***,包括:服务器管理单元,用于获取抓取内容的配置信息,并将所述配置信息发送至业务逻辑单元;业务逻辑单元,用于轮询更新所述服务器管理单元发送的配置信息,并将更新的配置信息发送至通用通信控制单元;通用通信控制单元,用于根据所述配置信息生成的测试脚本,并根据通用网络驱动协议将所述测试脚本发送至应用执行单元;应用执行单元,用于接收并解析所述测试脚本,并调用与解析结果匹配的原生测试框架对解析结果执行抓取操作。
本发明的另一方面,提供一种内容抓取装置,包括:配置信息更新单元,用于轮询更新抓取内容的配置信息;测试脚本生成单元,用于生成所述配置信息的测试脚本;脚本转化单元,用于通过通用网络驱动协议将所述测试脚本转化为统一资源定位符;发送单元,用于发送所述统一资源定位符。
本发明的最后一个方面,提供一种存储介质,其中存储有指令,所述指令被执行用于实现前述的内容抓取方法。
本说明书提供的技术方案带来的有益效果包括:可以实现对于互联网内容的抓取。抓取过程可以批量实现,并且可以避免由于平台限制、编程语言限制对于抓取步骤的影响。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一个应用场景中基于模拟终端操作的内容抓取***通信协议构架;
图2是本说明书实施例提供的***通信协议执行主体示意图;
图3是本说明书实施例提供的内容抓取方法步骤流程图;
图4是本说明书实施例提供的内容抓取过程中轮询更新配置信息过程示意图;
图5是本说明书实施例提供的内容抓取方法步骤流程图;
图6是本说明书实施例提供的节点服务原理示意图;
图7是本说明书实施例提供的内容抓取方法原理框图;
图8是本说明书实施例提供的内容抓取***原理框图;
图9是本说明书实施例提供的内容抓取装置原理框图;
图10是本说明书实施例提供的终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
如图1所示,其展示了本发明的一个应用场景中基于模拟终端操作的内容抓取***通信协议构架。在该构架中,整个***分为:服务器管理层、业务逻辑层、通用通信控制层和应用执行层四层。其中服务器管理层设置在服务器端,其用于获取模拟终端操作需要的配置信息。配置信息是模拟终端操作需要的资源集合,例如当模拟终端操作需要抓取与“运动、健康、饮食”相关的10000个公众号内容时,配置信息至少包括需要抓取的关键字“运动、健康、饮食”,以及截取长度10000个;在某些情况下还可以包括与关键字关联的筛选和排序算法等等。当然,在一些实施例中,服务器管理层仅用来存储这些配置信息,而并不去执行这些配置信息;而在另外一些实施例中,服务器管理层会根据配置信息的执行逻辑运行,并返回运行结果,然后把运行结果与配置信息合并然后下发到业务逻辑层。
依旧如图1所示,业务逻辑层用于接收服务器管理层传递的配置信息,该配置信息可以是模拟终端操作需要的最小资源集合,也可以是服务器管理层对配置信息的执行结果。在整个过程中,业务逻辑层轮询更新服务器管理层发送的配置信息,并将更新的配置信息发送至通用通信控制层。
通用通信控制层用于根据配置信息生成测试脚本,然后将测试脚本转化为通用网络驱动协议(WebDriver)下的统一资源定位符(URL)。接下来,通过节点(Node)服务将统一资源定位符(URL)发送到设置于应用执行层的执行节点上。
在图1中应用执行层接收通用通信控制层发送的基于通用网络驱动协议的统一资源定位符,对统一资源定位符进行解析,获得要执行的操作,然后调用应用执行层中的原生测试框架对操作进行测试,然后测试结果返回至通用通信控制层的节点服务。在通用通信控制层中可以包含有许多个原生测试框架,就内容抓取测试操作而言,其可以执行的操作包括但不限于:
获取和安装应用文件,应用文件包括但是不限于APP、APK、Web插件、小程序等等;
运行、刷新、重启应用(APP,APK);
跳转到指定活动页面、活动控件或者活动行;
执行对指定空间的点击操作;
执行页面的滚动操作;
向文本框输入指定内容或者指定的命令行;
抓取原生页面中的元素信息,所述元素信息包括但是不限于文字、图片、活动控件等等;
提取页面视图中网页源码,例如html源码。
应用执行层的执行的主体为原生测试框架。
应用执行层获得的测试结果返回通用通信控制层之后,由通用通信控制层传递至业务逻辑层,由业务逻辑层判断抓取结果是否存在异常,如果存在异常,则需要返回并重新执行抓取操作,如此循环,并在异常超过限定的次数时返回错误结果,由错误处理机制进行控制。如果抓取结果不存在异常,则业务逻辑层将抓取的结果上报到服务器管理层,由服务器管理层对内容进行存储。存储过程可以是将配置信息与抓取内容进行关联式的存储,以便后续通过数据库命令等对存储的内容进行查询操作。
如图2所示,服务器管理层的执行主体为服务器设备,本说明书不对其进行具体限定,可以是架设在主干网上的接口服务器、数据服务器、虚拟服务器、云服务器等等,只要能够满足获取配置信息、存储配置信息、并基于配置信息执行一定的查找和运算功能均可以满足本说明书对服务器的要求。业务逻辑层和通用通信控制层的执行主体为与服务器具有通讯连接关系的主机,其作为中间处理机对来自服务器管理层的配置信息进行处理、转译并转发到应用执行层中的各个处理平台。应用执行层的执行主体为能够实施操作行为的原生测试框架,其通常为移动终端,但是也不排除其他能够实现测试虚拟机。应用执行层可以有多个平台,并且在每个平台下运行原生测试框架。原生测试框架是指完全还原移动终端环境的测试框架,例如安装有不同操作***(Andriod、IOS)的、不同品牌的移动终端直接进行测试,以完全还原移动终端的实际运行环境。
在服务器需要抓取的内容存在来源多样性时,例如:(一),需要抓取的内容只存在于某些APP中,而不存在对应的Web页面。在某些情况下,需要抓取的内容存在特定的操作***中的APP中,例如IOS***下的某个APP中的内容,或者Andriod***中某个APK中的特定内容,而无法通过其他平台进行获取。(二),需要抓取的内容存在于Web页面中,但是无法获取其URL,例如微信公众号。(三)需要抓取的内容存在于Web页面中,也可以获取其URL,但是由于Web页面存在反爬措施,导致页面无法被正常抓取。反爬措施包括,无法获取Web页面的文字信息,无法获取Web页面的图片信息,无法对Web页面进行正常的截图操作,无法通过URL获取Web信息等等。而如果强行对该类Web内容进行抓取,将会返回错误的结果,在某些机制下,还会导致抓取***的死循环。
基于图1、图2场景提供通信构架以及处理平台,所属领域技术人员能够实现通过原生测试框架对服务器下发需要抓取内容的抓取。克服抓取内容来源多样性的问题,还可以通过通信协议层构架结合判断逻辑避免死循环的产生。
在本发明的一个实施例中,如图3所示,提供一种内容抓取方法,包括:
步骤S310,服务器管理层获取抓取内容的配置信息,并将所述配置信息发送至业务逻辑层。
服务器管理层用于管理需要捕获内容的配置信息,配置信息包含获取需要捕获内容的最小信息集合,例如,如果需要抓取的内容是关于“减肥”和“健康饮食”的1000条文章信息,那么配置信息中则至少包含“减肥”和“健康饮食”这两个关键词信息,以及对于条目数的要求。在一个可选的实施例中,服务器管理层会收集这些配置信息,并首先将这些配置信息以条目的形式存储服务器管理层,由于服务器管理层的执行主体可以是接口服务器、数据服务器、虚拟服务器、云服务器等等,配置信息的存储也是存储在这些服务器的数据库中。优选的方案是配置信息以云存储的方式分布式地存储于分布式服务器中,不失一般性的,由单个服务器也可以实现对于配置信息进行存储的功能。
配置信息可以是由用户输入,也可以是从其他接口进入的请求处理表单,本说明书不对配置信息的获取方式进行限定。
抓取内容,则是与配置信息关联的、需要通过服务器管理层下发来从数据源抓取的内容。
在服务器管理层获取需要抓取内容的配置信息之后,服务器管理层将需要抓取内容的配置信息下发至业务逻辑层。
步骤S320,业务逻辑层轮询更新所述服务器管理层发送的配置信息,并决定将更新的配置信息发送至通用通信控制层。
业务逻辑层用于轮询接收来服务器管理层的配置信息,接收配置信息的主体是一系列处于业务逻辑层的主机。一方面,主机采用轮询的方式更新服务器管理层下发的配置信息;另一方面,主机决策是否将更新的配合信息下发到通信控制层。
在一个可选的实施例中,如图4所示,在轮询接收过程中,来自服务器管理层的配置信息以堆栈的形式存在,主机以FIFO方式下发配置信息。
步骤S330,通用通信控制层根据所述配置信息生成的测试脚本,并根据通用网络驱动协议将所述测试脚本发送至应用执行层;
通用通信控制层用于处理业务逻辑层下发的配置信息,并将配置信息转换为可以执行的测试脚本,这里的测试脚本是指可以运行在终端机或者虚拟机上的可执行内容。
在一个可选的实施例中,测试脚本至少包括,执行抓取的关键字搜索脚本,平台分析脚本,结果分析、筛选和排序脚本,控件识别和操作脚本,元素提取和存储脚本,异常结果标记脚本。以需要抓取的内容是关于“减肥”和“健康饮食”的1000条文章信息为例。关键字搜索脚本用于以“减肥”和“健康饮食”为搜索条件获得需要抓取内容的搜索结果。平台分析脚本用于分析搜索结果所在的平台,例如Web内容、APP专属内容、APK内容分别属于网页浏览器平台、IOS平台和Andriod平台,平台分析脚本分析抓取内容所属的平台,用于生成对应平台的运行脚本,以及将抓取内容分发到对应的原生平台中进行抓取。结果分析、筛选和排序脚本用于对分析平台获得的结果进行筛选排除掉重复结果、噪音结果并按照相关度对结果进行排序,排序在前结果进行优先提取。元素日趋和存储脚本用于在原生平台上执行,抓取要获取内容中的文字、图片等信息,并将抓取到的结果进行存储。异常结果标记脚本,用于判断抓取结果是否异常,并在结果异常时通过标志位对结果进行标记。在创建测试脚本之后,主机将通用通信控制层通用网络驱动协议将所述测试脚本发送至应用执行层。
步骤S340,应用执行层接收并解析所述测试脚本,并调用与解析结果匹配的原生测试框架对解析结果执行抓取操作。
应用执行层在接收到来自通用通信控制层传递的测试脚本之后,由接收到对应脚本的原生测试框架对脚本进行测试。原生测试框架用于还原各种***平台的真实环境,例如IOS平台、安卓平台等。如此可以避免抓取过程中由于平台兼容性问题导致的异常产生。
应用执行层可以执行如下操作:调动原生测试框架获取和安装不同来源和用途的应用文件;调动原生测试框架运行、刷新或重启应用;调动原生测试框架跳转到指定活动页面、活动控件或者活动行;调动原生测试框架执行对指定控件的点击操作;调动原生测试框架执行页面的滚动操作;向文本框输入指定内容或者指定的命令行;调动原生测试框架抓取原生页面中的元素信息;调动原生测试框架提取页面视图中网页源码。
以需要抓取的内容是关于“减肥”和“健康饮食”的1000条文章信息为例。在应用执行层,测试脚本会被分发到应用执行层的至少一个原生测试框架,根据脚本分配,不同的原生测试框架执行不同的抓取任务,例如编号为1-99的IOS原生测试框架(也可以成为IOS原生平台)执行599条APP中的抓取任务,编号1-20的安卓原生测试平台执行156条安卓平台中的抓取任务,编号1-5的Win平台或者linux平台,执行剩余抓取任务。
综上所述,基于上述步骤,可以实现对于互联网内容的抓取。抓取过程可以批量实现,并且可以避免由于平台限制、编程语言限制对于抓取步骤的影响。
在本发明的一个实施例中,如图5所示,提供一种内容抓取方法,包括:
步骤S510,服务器管理层获取抓取内容的配置信息,并将所述配置信息发送至业务逻辑层。
服务器管理层用于管理需要捕获内容的配置信息,配置信息包含获取需要捕获内容的最小信息集合,例如,如果需要抓取的内容是关于“减肥”和“健康饮食”的1000条文章信息,那么配置信息中则至少包含“减肥”和“健康饮食”这两个关键词信息,以及对于条目数的要求。在一个可选的实施例中,服务器管理层会收集这些配置信息,并首先将这些配置信息以条目的形式存储服务器管理层,由于服务器管理层的执行主体可以是接口服务器、数据服务器、虚拟服务器、云服务器等等,配置信息的存储也是存储在这些服务器的数据库中。优选的方案是配置信息以云存储的方式分布式地存储于分布式服务器中,不失一般性的,由单个服务器也可以实现对于配置信息进行存储的功能。
配置信息可以是由用户输入,也可以是从其他接口进入的请求处理表单,本说明书不对配置信息的获取方式进行限定。
抓取内容,则是与配置信息关联的、需要通过服务器管理层下发来从数据源抓取的内容。
在服务器管理层获取需要抓取内容的配置信息之后,服务器管理层将需要抓取内容的配置信息下发至业务逻辑层。
步骤S520,业务逻辑层轮询更新所述服务器管理层发送的配置信息,并决定将更新的配置信息发送至通用通信控制层。
业务逻辑层用于轮询接收来服务器管理层的配置信息,接收配置信息的主体是一系列处于业务逻辑层的主机。一方面,主机采用轮询的方式更新服务器管理层下发的配置信息;另一方面,主机决策是否将更新的配合信息下发到通信控制层。
在一个可选的实施例中,在轮询接收过程中,来自服务器管理层的配置信息以堆栈的形式存在,主机以FIFO方式下发配置信息。
步骤S530,通用通信控制层根据通用网络驱动协议生成的所述配置信息测试脚本,并将所述测试脚本发送至应用执行层;
通用通信控制层用于处理业务逻辑层下发的配置信息,并将配置信息转换为可以执行的测试脚本,这里的测试脚本是指可以运行在终端机或者虚拟机上的可执行内容。
在一个可选的实施例中,测试脚本至少包括,执行抓取的关键字搜索脚本,平台分析脚本,结果分析、筛选和排序脚本,控件识别和操作脚本,元素提取和存储脚本,异常结果标记脚本。以需要抓取的内容是关于“减肥”和“健康饮食”的1000条文章信息为例。关键字搜索脚本用于以“减肥”和“健康饮食”为搜索条件获得需要抓取内容的搜索结果。平台分析脚本用于分析搜索结果所在的平台,例如Web内容、APP专属内容、APK内容分别属于网页浏览器平台、IOS平台和Andriod平台,平台分析脚本分析抓取内容所属的平台,用于生成对应平台的运行脚本,以及将抓取内容分发到对应的原生平台中进行抓取。结果分析、筛选和排序脚本用于对分析平台获得的结果进行筛选排除掉重复结果、噪音结果并按照相关度对结果进行排序,排序在前结果进行优先提取。元素日趋和存储脚本用于在原生平台上执行,抓取要获取内容中的文字、图片等信息,并将抓取到的结果进行存储。异常结果标记脚本,用于判断抓取结果是否异常,并在结果异常时通过标志位对结果进行标记。在创建测试脚本之后,主机将通用通信控制层通用网络驱动协议将所述测试脚本发送至应用执行层。
在一个可选的实施例中,通用通信控制层根据通用网络驱动协议将所述测试脚本转化为统一资源定位符;将所述统一资源定位符发送至应用执行层。由于在抓取过程中,需要对接不通的原生平台,那么通用通信控制层在进行脚本转化过程中需要面对不同的脚本语言,这增大了抓取过程中的出错的概率。就需要加载的语言而言,可能涉及java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,C++等等。因此,通用通信控制层根据通用网络驱动协议将所述测试脚本转化为统一资源定位符(URL),在应用执行层只需要访问URL。
下面基于Android原生平台和IOS原生平台对该方式进行解释:
在Android原生平台下,通用通信控制层根据通用网络驱动协议将所述测试脚本转化为统一资源定位符(URL),在应用执行层只需要访问URL在应用执行层至需要访问URL,利用URL运行脚本并调用引导带控件,调用界面语言自动适配器执行,界面语言自动适配器则可以将不同语言适配为通用语言,例如Java语言。其工作流程包括:
接收上层协议层下发的测试脚本或者基于配置信息生成测试脚本;
基于界面语言自动适配器搭建自动语言识别服务,该服务支持通用网络驱动协议,可以采用例如4723的端口,并在接收到来自下层协议层的REST请求时,对请求内容进行解析,然后调用对应原生框架的响应操作;
其间界面语言自动适配器会把请求转发给引导带控件,引导带控件监听对应端口,并等待接受指令;
并将接受指令后运行的结果返回到上层协议层。
当然,此处所举的方式仅仅是一种方式,本实施例并不排斥使用其他的实现方式。
在IOS原生平台下,界面语言自动适配器则直接对IOS的Instruments框架进行封装,利用Instruments框架中的自动化测试框架进行语言适配,同时在设备中加入引导带控件进行监听。其工作流程包括:
接收上层协议层下发的测试脚本或者基于配置信息生成测试脚本;测试脚本符合通用网络驱动协议的要求;
基于界面语言自动适配器搭建自动语言识别服务,该服务支持通用网络驱动协议,可以采用例如4723的端口,并在接收到来自下层协议层的REST请求时,对请求内容进行解析,然后调用对应原生框架的响应操作;
利用instruments控件启动一个socket服务,同时分出子进程运行instruments.app,通过引导带控件形成与外部服务的交互。
最终,将接受指令后运行的结果返回到上层协议层。
当然,此处所举的方式仅仅是一种方式,本实施例并不排斥使用其他的实现方式。
在本步骤中,根据通用网络驱动协议将所述测试脚本转化为统一资源定位符可以极大地克服抓取过程中由于多语言可能造成的环境错误。
在一个可选的实施例中,将所述测试脚本发送至应用执行层通过节点服务实现,如图6所示,节点服务用于将测试脚本传递至应用执行层对应的原生测试框架中,其可以将对应节点的待测试脚本或者URL传递至应用的执行层的不同原生测试框架,这种方式对于目前非原生Adriod***环境形态各异,特别是例如华为、小米、锤子、OPPO、VIVO、三星等等厂商分别具有各态的操作***尤其有利。可以减少脚本在不同操作***中执行出现的异常错误。
在节点服务运行过程中,可以利用后台服务进行对节点服务的传输进行保证。因为,节点服务通过触发脚本回调函数后,需要在主机中执行对应的启动命令来执行shell文件以启动节点服务,这需要设定节点服务的ID,以在命令执行结束后退出后台服务。而在本实施例中,因为同时存在多个节点与应用执行层的原生测试框架进行通讯,可以在启动节点服务的后台服务后,通过量产函数来创建进程组,利用分离选项让节点原生创建一个后台进程,并由此创建一个新的会话控制和进程组,子进程的pid为新创建进程组的组pid,这与节点服务器的ID起到相同的作用。此时的子进程已经和其父进程属于两个会话,因此父进程的退出和中断信号不会传递给子进程,子进程不会接受到父进程的中断信号自然也不会退出。当父进程结束之后,子进程变为孤儿进程从而被原始进程接收,ppid设置为1。基于此方法,节点服务中各个节点之间的传输能够相互不受影响。
步骤S540,应用执行层接收并解析所述测试脚本,并调用与解析结果匹配的原生测试框架对解析结果执行抓取操作。
应用执行层在接收到来自通用通信控制层传递的测试脚本之后,由接收到对应脚本的原生测试框架对脚本进行测试。原生测试框架用于还原各种***平台的真实环境,例如IOS平台、安卓平台等。如此可以避免抓取过程中由于平台兼容性问题导致的异常产生。
应用执行层可以执行如下操作:调动原生测试框架获取和安装不同来源和用途的应用文件;调动原生测试框架运行、刷新或重启应用;调动原生测试框架跳转到指定活动页面、活动控件或者活动行;调动原生测试框架执行对指定控件的点击操作;调动原生测试框架执行页面的滚动操作;向文本框输入指定内容或者指定的命令行;调动原生测试框架抓取原生页面中的元素信息;调动原生测试框架提取页面视图中网页源码。
以需要抓取的内容是关于“减肥”和“健康饮食”的1000条文章信息为例。在应用执行层,测试脚本会被分发到应用执行层的至少一个原生测试框架,根据脚本分配,不同的原生测试框架执行不同的抓取任务,例如编号为1-99的IOS原生测试框架(也可以成为IOS原生平台)执行599条APP中的抓取任务,编号1-20的安卓原生测试平台执行156条安卓平台中的抓取任务,编号1-5的Win平台或者linux平台,执行剩余抓取任务。
步骤S550,应用执行层将抓取操作获得的内容回传至所述通用通信控制层。应用执行层通过抓取操作获得的内容同样可以通过前述的节点服务回传至通用通信控制层,其过程和原理与步骤S530中相同。
步骤S560,所述通用通信控制层,将抓取操作获得的内容回传至所述业务逻辑层;
步骤S570,所述业务逻辑层判断所述抓取操作获得的内容是否存在异常;并根据是否存在异常进行处理。
当所述抓取操作获得的内容不存在异常时,将抓取操作获得的内容传输至服务器管理层,所述服务器管理层对抓取操作获得的内容与配置信息进行关联存储,同时所述业务逻辑层更新向通用通信控制层发送的配置信息;
当所述抓取操作获得的内容存在异常时,业务逻辑层判断该配置信息出现异常的次数;当所述出现异常的次数小于预置次数时,业务逻辑层不对配置信息进行轮询更新,并将该配置信息重新发送至通用通信控制层;当所述出现异常的次数等于预置次数时,业务逻辑层轮询更新所述服务器管理层发送的配置信息,并上报所述异常信息。
通过步骤S570设立的异常处理机制,可以防止由于抓取内容存在反爬机制导致错误结果返回而导致的抓取任务死循环问题。同时还可以降低由于抓取环境和抓取平台异常而导致的单次抓取的错误概率。
步骤S570中还包括,当所述抓取操作获得的内容存在异常时,业务逻辑层判断该配置信息出现异常的次数;当所述出现异常的次数小于预置次数时,业务逻辑层不对配置信息进行轮询更新,并将该配置信息重新发送至通用通信控制层;通信控制层重新生成测试脚本,并将所述测试脚本发送至与前次测试不同的原生测试框架。由此保证,发生异常的抓取结果在一个新的原生测试框架下进行抓取,避免由于抓取平台问题导致的异常产生。
综上所述,基于上述步骤,可以实现在对互联网内容的抓取过程中,通过部署在应用执行层的原生测试框架模拟用户的真实操作,从而实现对内容的抓取。
如图7所示,在一个可能的示例中,提供一种内容抓取方法,包括:
S710,轮询更新抓取内容的配置信息;
S720,生成所述配置信息的测试脚本;
S730,通过通用网络驱动协议将所述测试脚本转化为统一资源定位符;
S740,发送所述统一资源定位符。
如图8所示,在一个可能的示例中,提供一种内容抓取***,其包括:服务器管理单元,用于获取抓取内容的配置信息,并将所述配置信息发送至业务逻辑单元;业务逻辑单元,用于轮询更新所述服务器管理单元发送的配置信息,并将更新的配置信息发送至通用通信控制单元;通用通信控制单元,用于根据所述配置信息生成的测试脚本,并根据通用网络驱动协议将所述测试脚本发送至应用执行单元;应用执行单元,用于接收并解析所述测试脚本,并调用与解析结果匹配的原生测试框架对解析结果执行抓取操作。
所述内容抓取***用于执行步骤S310-S340所述的方法。
在一个可能的示例中,提供一种内容抓取***,其包括:服务器管理单元,用于获取抓取内容的配置信息,并将所述配置信息发送至业务逻辑单元;业务逻辑单元,用于轮询更新所述服务器管理单元发送的配置信息,并将更新的配置信息发送至通用通信控制单元;通用通信控制单元,用于根据所述配置信息生成的测试脚本,并根据通用网络驱动协议将所述测试脚本发送至应用执行单元;应用执行单元,用于接收并解析所述测试脚本,并调用与解析结果匹配的原生测试框架对解析结果执行抓取操作。所述通用通信控制单元,还用于将抓取操作获得的内容回传至所述业务逻辑单元;业务逻辑单元判断所述抓取操作获得的内容是否存在异常,当所述抓取操作获得的内容不存在异常时,所述业务逻辑单元更新向所述通用通信控制单元发送的配置信息。
所述内容抓取***用于执行步骤S510-S570所述的方法。
如图9所示,在一个可能的示例中,提供一种内容抓取装置,其包括:配置信息更新单元,用于轮询更新抓取内容的配置信息;测试脚本生成单元,用于生成所述配置信息的测试脚本;脚本转化单元,用于通过通用网络驱动协议将所述测试脚本转化为统一资源定位符;发送单元,用于发送所述统一资源定位符。
所述内容抓取***用于执行步骤S710-S740所述的方法。
请参考图10,其示出了本发明一个实施例提供的测试终端的结构示意图。该终端用于实施上述实施例中提供的方法。具体来讲:
终端1000可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、视频传感器150、音频电路160、WiFi(wireless fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图8中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯***)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1000的使用所创建的数据(比如视频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括图像输入设备131以及其他输入设备132。图像输入设备131可以是摄像头,也可以是光电扫描设备。除了图像输入设备131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端1000的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,15有机发光二极管)等形式来配置显示面板141。
终端1000可包括至少一种视频传感器150,视频传感器用于获取用户的视频信息。终端1000还可以包括其它传感器(未示出),比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端1000移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端1000还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
视频电路160、扬声器161,传声器162可提供用户与终端1000之间的视频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路11以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端1000的通信。
WiFi属于短距离无线传输技术,终端1000通过WiFi模块70可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块170,但是可以理解的是,其并不属于终端1000的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是终端1000的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端1000的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。
可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端1000还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理***与处理器180逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端1000还可以包括蓝牙模块等,在此不再赘述。
具体在本实施例中,终端1000还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行本发明实施例提供的内容抓取方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种内容抓取方法,其特征在于,所述方法包括:
服务器管理层获取抓取内容的配置信息,并将所述配置信息发送至业务逻辑层;
业务逻辑层轮询更新所述服务器管理层发送的配置信息,并将更新的配置信息发送至通用通信控制层;
通用通信控制层根据通用网络驱动协议生成所述更新的配置信息的测试脚本,并根据将所述测试脚本发送至应用执行层;
应用执行层接收并解析所述测试脚本,并调用与解析结果匹配的原生测试框架对解析结果执行抓取操作。
2.根据权利要求1所述的方法,其特征在于,应用执行层接收并解析所述测试脚本,并调用与解析结果匹配的原生测试框架对解析结果执行抓取操作之后还包括:
所述应用执行层将抓取操作获得的内容回传至所述通用通信控制层;
所述通用通信控制层,将抓取操作获得的内容回传至所述业务逻辑层;
所述业务逻辑层判断所述抓取操作获得的内容是否存在异常,当所述抓取操作获得的内容不存在异常时,所述业务逻辑层更新向所述通用通信控制层发送的配置信息。
3.根据权利要求2所述的方法,其特征在于,当所述抓取操作获得的内容存在异常时,业务逻辑层判断所述配置信息出现异常的次数;
当所述出现异常的次数小于预置次数时,业务逻辑层不对配置信息进行更新,并将所述配置信息重新发送至通用通信控制层;
当所述出现异常的次数等于预置次数时,业务逻辑层轮询更新所述服务器管理层发送的配置信息,并上报异常信息。
4.根据权利要求1所述的方法,其特征在于,所述根据通用网络驱动协议将所述测试脚本发送至应用执行层步骤包括:
根据通用网络驱动协议将所述测试脚本转化为统一资源定位符;
将所述统一资源定位符发送至应用执行层。
5.根据权利要求4所述的方法,其特征在于,所述通用通信控制层通过节点服务将统一资源定位符传递至应用执行层;
和/或,所述应用执行层通过节点服务将抓取操作获得的内容回传至所述通用通信控制层。
6.根据权利要求1所述的方法,其特征在于,所述调用与解析结果匹配的原生测试框架对解析结果执行抓取操作,包括:执行如下操作中的至少一种:
调动原生测试框架获取和安装不同来源和用途的应用文件;
调动原生测试框架运行、刷新或者重启应用;
调动原生测试框架跳转到指定活动页面、活动控件或者活动行;
调动原生测试框架执行对指定控件的点击操作;
调动原生测试框架执行页面的滚动操作;
向文本框输入指定内容或者指定的命令行;
调动原生测试框架抓取原生页面中的元素信息;
调动原生测试框架提取页面视图中网页源码。
7.一种内容抓取方法,其特征在于,所述方法包括:
轮询更新抓取内容的配置信息;
生成更新的配置信息的测试脚本;
通过通用网络驱动协议将所述测试脚本转化为统一资源定位符;
发送所述统一资源定位符。
8.一种内容抓取***,其特征在于,所述***包括:
服务器管理单元,用于获取抓取内容的配置信息,并将所述配置信息发送至业务逻辑单元;
业务逻辑单元,用于轮询更新所述服务器管理单元发送的配置信息,并将更新的配置信息发送至通用通信控制单元;
通用通信控制单元,用于根据所述更新的配置信息生成的测试脚本,并根据通用网络驱动协议将所述测试脚本发送至应用执行单元;
应用执行单元,用于接收并解析所述测试脚本,并调用与解析结果匹配的原生测试框架对解析结果执行抓取操作。
9.一种内容抓取装置,其特征在于,所述装置包括:
配置信息更新单元,用于轮询更新抓取内容的配置信息;
测试脚本生成单元,用于生成更新的配置信息的测试脚本;
脚本转化单元,用于通过通用网络驱动协议将所述测试脚本转化为统一资源定位符;
发送单元,用于发送所述统一资源定位符。
10.一种存储介质,其中存储有指令,所述指令被执行用于实现权利要求1至6之一所述的内容抓取方法;
或者,所述指令被执行用于实现权利要求7所述的内容抓取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810549611.XA CN108984375B (zh) | 2018-05-31 | 2018-05-31 | 一种内容抓取方法、装置、***以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810549611.XA CN108984375B (zh) | 2018-05-31 | 2018-05-31 | 一种内容抓取方法、装置、***以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108984375A CN108984375A (zh) | 2018-12-11 |
CN108984375B true CN108984375B (zh) | 2020-12-08 |
Family
ID=64542812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810549611.XA Active CN108984375B (zh) | 2018-05-31 | 2018-05-31 | 一种内容抓取方法、装置、***以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108984375B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650669A (zh) * | 2020-12-04 | 2021-04-13 | 苏州黑云智能科技有限公司 | 基于区块链的appium自动化测试方法 |
CN113821423B (zh) * | 2021-09-27 | 2023-08-11 | 杭州网易云音乐科技有限公司 | 数据采集方法、装置、存储介质和计算设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740290A (zh) * | 2014-12-11 | 2016-07-06 | 富士通株式会社 | 移动设备自适应网络搜索的***和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034583B (zh) * | 2011-09-30 | 2016-03-30 | 国际商业机器公司 | 一种用于处理软件自动测试脚本的方法和*** |
-
2018
- 2018-05-31 CN CN201810549611.XA patent/CN108984375B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740290A (zh) * | 2014-12-11 | 2016-07-06 | 富士通株式会社 | 移动设备自适应网络搜索的***和方法 |
Non-Patent Citations (1)
Title |
---|
基于Selenium WebDriver和Selendroid的自动化测试的研究;程佩;《中国优秀硕士学位论文全文数据库信息科技辑》;20170215(第2期);I138-1654页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108984375A (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109117361B (zh) | 一种小程序的远程调试方法、相关设备及*** | |
CN110141864B (zh) | 一种游戏自动测试方法、装置及终端 | |
CN107040609B (zh) | 一种网络请求处理方法和装置 | |
US10824449B2 (en) | Application running method and device | |
CN108536594B (zh) | 页面测试方法、装置及存储设备 | |
CN109857403B (zh) | 一种页面更新、页面处理方法及装置 | |
CN108039963B (zh) | 一种容器配置方法、装置及存储介质 | |
CN110457214B (zh) | 应用测试方法及装置、电子设备 | |
CN109947650B (zh) | 脚本步骤处理方法、装置和*** | |
CN109800030B (zh) | 一种应用程序运行方法、装置及终端 | |
CN110020293B (zh) | 多媒体数据展示方法、装置及存储介质 | |
CN107666406B (zh) | 智能卡片显示方法及装置 | |
CN105955739A (zh) | 一种图形界面的处理方法、装置和*** | |
CN111475359B (zh) | 多消息交互场景下的***测试方法、装置和存储介质 | |
CN111371676B (zh) | 一种客服功能接入方法和相关装置 | |
CN108984375B (zh) | 一种内容抓取方法、装置、***以及存储介质 | |
CN108874653A (zh) | 任务测试方法、测试机、共享服务器和可读存储介质 | |
CN112749074B (zh) | 一种测试用例推荐方法以及装置 | |
CN112328492A (zh) | 一种主播间的互动控制方法、装置和电子设备 | |
CN107025574B (zh) | 推广信息的展示方法及装置 | |
CN115756881A (zh) | 基于sdk的数据处理方法、装置、设备、存储介质 | |
CN105095161B (zh) | 一种显示富文本信息的方法及装置 | |
CN106100974B (zh) | 信息分享方法及装置 | |
CN111273955A (zh) | 热修复插件优化方法、装置、存储介质及电子设备 | |
CN110309454B (zh) | 一种界面显示方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |