CN111797340B - 一种自定义提取流程的服务封装系统 - Google Patents
一种自定义提取流程的服务封装系统 Download PDFInfo
- Publication number
- CN111797340B CN111797340B CN202010526593.0A CN202010526593A CN111797340B CN 111797340 B CN111797340 B CN 111797340B CN 202010526593 A CN202010526593 A CN 202010526593A CN 111797340 B CN111797340 B CN 111797340B
- Authority
- CN
- China
- Prior art keywords
- service
- flow
- module
- user
- information
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9538—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种自定义提取流程的服务封装系统,包括服务生成子系统,服务注册中心、服务调用子系统;所述服务生成子系统为服务提供者提供自定义流程编辑操作窗口,服务提供者通过该自定义流程编辑操作窗口自定义编辑流程,形成一个操作流程作为服务信息发送到服务注册中心进行保存;所述服务注册中心对接收的服务信息进行管理和维护;所述服务调用子系统为服务调用者提供调用平台,服务调用者通过该调用平台调用保存在服务注册中心的服务。该服务封装系统为服务提供者和服务请求者提供一个服务封装平台,服务提供者通过该服务封装平台自定义流程并封装成流程,服务请求者通过该服务封装平台调用需要的服务。
Description
技术领域
本发明属于服务计算领域,具体涉及一种自定义提取流程的服务封装系统。
背景技术
随着互联网的发展和大数据时代的到来,越来越多的数据和信息在互联网上不断的堆积,Web应用包含的数据量发生了爆炸式的增长。
Web应用分为后台程序和前端程序两部分。后台程序负责对Web应用中的业务逻辑进行处理,并负责对用户的会话信息(session)进行控制等,后台程序结合数据库对用户的数据做持久化的保存和处理。后台程序可以由各种各样的语言和框架实现,如ASP、PHP、Spring等,并结合如MySQL、MongoDB等数据库完成后台整体操作逻辑。前端程序即Web应用展示给用户的可视化操作界面,通过HTTP协议,前端页面可以显示在浏览器中,并结合JavaScript等技术完成与后台程序的交互。
针对Web应用上的数据通常使用搜索引擎技术,大大地提高了人们获取数据的效率。然而,搜索引擎得到的网页原始页面并没有对页面进行结构化处理,不适宜对页面中的数据进行分析和处理。为了定向抓取Web数据,聚焦爬虫技术应运而生。
网络爬虫(Web Crawler),又名网络蜘蛛,是一种可以自动化的在互联网上进行浏览和数据提取的程序。聚焦爬虫技术既可以有选择地访问互联网上的页面和相关的图片、链接等资源,又可以定向的抓取只和自己需求有关的信息。然而传统的聚焦爬虫技术通常需要专业的技术人员来为客户进行编写,且只能针对于特定的网页,无法自行调整。如何简单而定制化的爬取Web应用中的数据逐渐成为了各行业的一个重要的需求和挑战。
面向服务的架构(service-oriented architecture,SOA)是一种分布式执行的软件设计方法,软件的部分组件(调用者)可以通过网上的通用协议(如HTTP)操纵另一个应用软件组件的运行,从而获得相应的服务。
Web服务(Web Service)是一种SOA的技术,服务器侦听网络上特定端口上的请求,提供Web文档(如HTML,JSON,XML),并创建Web应用程序服务,这些服务可解决Web上的特定领域问题。
Web服务通常向外界暴露出一个能够通过Web进行调用的API,使用户可以通过直接调用API的方式来得到想要的数据,而无需知道具体的服务实现细节。
通常,用户调API时以GET或POST方式提供输入参数给Web服务,Web服务读取API输入参数并进行相应处理后,会以结构化的数据文档格式(如XML,JSON,CSV)将输出数据返回给用户。
发明内容
本发明的目的是提供一种自定义提取流程的服务封装系统,该服务封装系统为服务提供者和服务请求者提供一个服务封装平台,服务提供者通过该服务封装平台自定义流程并封装成流程,服务请求者通过该服务封装平台调用需要的服务。
为实现上述发明目的,本发明提供以下技术方案:
一种自定义提取流程的服务封装系统,包括服务生成子系统,服务注册中心、服务调用子系统;
所述服务生成子系统为服务提供者提供自定义流程编辑操作窗口,服务提供者通过该自定义流程编辑操作窗口自定义编辑流程,形成一个操作流程作为服务信息发送到服务注册中心进行保存;
所述服务注册中心对接收的服务信息进行管理和维护;
所述服务调用子系统为服务调用者提供调用平台,服务调用者通过该调用平台调用保存在服务注册中心的服务。
其中,所述服务生成子系统包括服务流程定义模块、客户端和服务流程管理模块;
所述服务流程定义模块主要用于加载浏览器中的任意页面,并提供可操作的执行方法和参数记录以实现自动编辑定义流程;
所述客户端用作服务流程定义模块和服务流程管理模块之间的中介,能够实现消息转接、进程操作、交互行为模拟以及服务信息可视化展示及管理。
所述服务流程管理模块是一个可以自定义Web数据采集流程的操作台,使服务提供者可以通过可视化的方式对流程中的各个操作选项进行增删改查,剪切复制的控制,同时修改各个选项中涉及的各项参数。
其中,所述服务流程定义模块的扩展程序由内容脚本和后台脚本两个组件组成,两组件之间进行消息传递;
内容脚本将操作台嵌入到浏览器中加载的任意页面中,并提供编辑操作;
后台脚本负责维护一个全局的环境,还负责和整个操作流程中任意页面内的内容脚本进行交互,并将需要记录的操作信息传递给客户端。
其中,所述内容脚本由表现层和逻辑层组成,表现层负责实现对界面的各种可视化操作,逻辑层则负责处理相关操作的底层逻辑;
内容脚本的表现层中包含的方法有元素待选、元素选中、操作台显示、扩大选区、撤销选择、取消选择、选中子元素、同类型元素自动匹配、同类型元素手动匹配;
内容脚本的逻辑层中的方法包括数据参数生成、参数示例数据删除、确认采集、鼠标移动到元素/鼠标点击元素、循环点击元素、输入文字/切换下拉选项。
其中,服务流程定义模块的后台脚本的主要方法包括消息监听与处理、消息传递、全局变量管理。
其中,所述服务流程管理模块由表现层和逻辑层构成;
服务流程管理模块的表现层中包括的方法为新增操作、删除操作、移动操作、复制操作、新增条件分支和调整锚点操作;
服务流程管理模块的逻辑层包括的方法为消息监听与处理,操作参数处理和服务信息生成。
其中,所述服务注册中心包括服务管理模块和任务管理模块;
服务管理模块用于对服务提供者通过服务生成子系统生成的服务信息进行管理;
任务管理模块是根据服务请求者的服务调用请求将请求的服务信息转成任务信息后发送给服务调用子系统。
其中,所述服务调用子系统包括请求参数分析模块、系统参数处理模块、程序操作处理模块、以及数据结果过滤模块;
请求参数分析模块负责分析Web请求中的各项参数,并按照类型将参数分配给不同的处理模块进行处理;
系统参数处理模块负责对系统级别的参数进行处理,各项参数对应的处理逻辑在服务注册中心中定义和实现;
程序操作处理模块对用户自定义的操作流程进行解析,并根据各操作的配置参数复现这些操作;
数据结果过滤模块按照过滤参数对采集到的数据进行过滤和格式化处理。
与现有技术相比,本发明具有的有益效果为:
本发明提供的自定义提取流程的服务封装系统为服务提供者提供了服务生成子系统以实现对服务的自定义,即通过若干点击和少量的输入即可以将网页封装成一个服务;为服务调用者提供服务调用子系统以实现自定义服务的调用,并且提供了若干参数以满足输入和筛选的需求,这些参数既包括统一的参数,也包含针对不同网页生成的特定参数,满足了用户需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。
图1是实施例提供的自定义提取流程的服务封装系统的结构示意图;
图2是实施例提供的服务流程定义模块的结构示意图;
图3是实施例提供的服务流程管理模块的结构示意图;
图4是实施例提供的服务流程管理模块的功能可视化示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
如图1所示,本实施例提供的自定义提取流程的服务封装系统包括服务生成子系统,服务注册中心、服务调用子系统。
服务提供者在定义Web应用数据采集服务时,需要根据自身对服务流程复杂度的需求(简单或复杂),在简单数据采集场景下使用简单数据采集分系统,或在复杂数据采集场景下使用复杂数据采集分系统中的服务生成子系统进行服务生成操作。服务生成子系统将生成的服务信息保存到服务注册中心,从而实现对生成服务的维护。服务提供者可对自身生成的服务进行管理,服务注册中心管理员可对服务注册中心中所有的服务进行管理。
服务请求者从服务注册中心中寻找想要的服务并以Web请求的方式进行服务调用,在提供服务输入参数后,服务注册中心会将相应服务的服务信息(简单数据采集场景)或任务信息(复杂数据采集场景)传递给对应场景分系统下的服务调用子系统,从而进行Web应用数据的采集。最后,服务调用子系统在服务流程执行完成后,将服务响应结果返回给服务请求者,完成服务调用。
系统同时负责对简单数据采集分系统、复杂数据采集分系统和服务注册中心内发生的各项操作行为进行监控和日志记录,以方便系统开发人员进行代码调试和项目维护。系统使用MongoDB数据库对服务注册中心中的服务进行持久化处理,同时,服务监控系统使用Redis进行缓存处理,并使用MySQL数据库对系统中产生的日志进行处理和维护。系统使用Python语言执行Web应用中的数据处理任务,在服务生成阶段,本文使用JavaScript语言,结合Chrome扩展开发技术,实现对服务生成流程的控制;最后,系统以C#语言和.NetFramework作为载体,提供WebSocket服务,从而实现复杂数据采集分系统中各模块的消息传递。
如图1所示,服务生成子系统包括服务流程定义模块、客户端和服务流程管理模块。
其中,服务流程定义模块是一个加载了定制化的Google Chrome扩展的浏览器,可供服务提供者可视化的对Web页面执行打开网页、选中元素、点击元素、输入文字、切换下拉选项、鼠标移动到元素、识别验证码、提取数据(采集元素)、选中全部元素、选中子元素、撤销选择、扩大选区、循环、条件判断等操作。服务流程定义模块中使用的扩展程序的操作架构如图2所示。
如图2所示,服务流程定义模块的扩展程序由内容脚本和后台脚本两个组件组成,两组件之间通过扩展提供的方法进行消息传递。内容脚本将操作台嵌入到浏览器中加载的任意页面中,并提供各种操作的执行方法;后台脚本负责维护一个全局的环境,如记录当前已经添加的参数的数目;同时,后台脚本负责和整个操作流程中任意页面内的内容脚本进行交互,并将需要记录的操作信息通过WebSocket传递给客户端,并最终由客户端传递给服务流程管理模块。最后,后台脚本监听来自客户端的消息,从而进一步的通知相关Web页面中的内容脚本执行相应的操作。
如图2所示,内容脚本由表现层和逻辑层两部分组成。表现层负责实现对界面的各种可视化操作,逻辑层则负责处理相关操作的底层逻辑。
具体地,内容脚本的表现层中包含的方法有元素待选、元素选中、操作台显示、扩大选区、撤销选择、取消选择、选中子元素、同类型元素自动匹配、同类型元素手动匹配。
其中,元素待选指用户在Web页面中移动鼠标时,鼠标所在的位置对应的元素的背景颜色会变成指定的颜色A,以辅助用户快速的定位到自己想要选择的元素;当鼠标移开时,元素的背景恢复成原来的颜色。元素选中是指元素被选中,当元素被选中时,元素的背景颜色变为指定的颜色B,以提示用户哪些元素被选中,被选中元素的背景颜色在取消选中之前不会发生变化。操作台显示是指在Web页面中嵌入操作台,并绑定相关的处理逻辑供用户进行操作。同时,该操作台可被拖动到页面中的任意位置。注意,在操作台中,屏蔽了元素待选和元素选中的功能。扩大选区是指扩大当前元素的选区。撤销选择是指撤销最后一次选中的元素。取消选择是指取消所有选中的元素。选中子元素是指选中当前所有选中的元素内的所有子元素,并进行标识。同类型元素自动匹配是指在没有元素被选中时,任意选中页面中的一个元素,系统将会自动检测到与被选中元素同类型的元素,并将这些同类型的元素以蓝色框标记,以方便用户进行“选中全部元素”操作,节省用户点选元素的时间。同类型元素手动匹配是指在某些情况下,由于元素的层级关系较为复杂,而同类型元素自动匹配方法遵循就近优先的原则并没有将和已选中元素同类型的元素全部选中,因此需要用户手动选中尚未被标记的同类元素,系统此时将会进行再一次的同类型元素检测,扩大检测范围以检测到与当前所有选中的元素同类型的元素,并做好标记向用户展示。
元素选中操作,系统通过对Web页面的根节点的鼠标移动事件进行监听,实现了实时监控鼠标移动变化并得到当前鼠标所在位置元素的功能。
内容脚本的逻辑层中的主要方法包括数据参数生成、参数示例数据删除、确认采集、鼠标移动到元素/鼠标点击元素、循环点击元素、输入文字/切换下拉选项。
其中,数据参数生成是指生成最终要提取的数据参数字段,即服务的输出参数。数据参数生成时,可能存在的情况包括:
A.当前只选中了一个元素,并提取元素本身的数据,如元素文本。此时系统生成1个参数字段,并带有1个示例值,即元素本身的值。
B.当前选中了n(n>1)个元素,各元素类型相同,并提取同类型元素本身的数据,并提取它们的地址。此时系统生成1个参数字段,并带有n个示例值。
C.当前选中了n(n>1)个元素,各元素类型相同,并提取元素的子元素的数据,并提取每个块内的子元素,如商品标题,图片地址,销售商家等。如果所有块内的所有不同类型子元素数目为m,则此时系统生成m个参数字段,并带有n个示例值;如果某个参数字段对应的子元素(如京东自营图片)在某些已选中的元素中不存在,则其字段示例值为空。
D.当前选中了n(n>1)个元素,各元素类型不同,此时,只能提取元素类型本身的数据。此时,系统生成n个参数字段,每个字段带有1个示例值。
某些情况下,用户并不想提取一个字段中所有的示例值对应位置的元素的数据,因此,系统提供了删除参数示例数据的功能,当商品的参数示例数据被删除时,则在服务调用阶段,当前页面商品列表中第一个商品的名称将不会被提取。确认采集是指将生成的字段参数传递给后台脚本,并最终传递给服务流程管理模块,以生成采集流程中的“提取数据”操作节点,同时带有相关的参数信息。鼠标移动到元素/鼠标点击元素是指进行鼠标点击元素和移动到元素的操作,并将操作信息传递给后台脚本。为了执行循环点击已选中元素列表中的每个元素的操作,需要在服务流程定义模块操作台中点击“循环点击元素”选项。选项执行后,系统将会把循环点击元素的操作信息传递给服务流程管理模块,从而生成相应的执行操作节点,并同时点击第一个需要循环点击的元素,供用户进行下一步的操作。输入文字/切换下拉选项是指进行输入文字或切换下拉选项操作,并将操作信息(包括输入的值)传递给服务流程管理模块。
如图2所示,服务流程定义模块的后台脚本的主要方法包括消息监听与处理、消息传递、全局变量管理。
其中,消息监听与处理是指主要监听来自内容脚本和客户端中发出的消息,并解析消息内容,进行对应的操作处理,如更新全局变量,控制页面刷新等。消息传递是指将用户操作过程中执行的各个操作的消息传递给客户端,并最终传递给服务管理模块,从而实现对流程节点的管理。同时,对于接收到的输入文字操作的请求,后台脚本向客户端传递输入文字的消息,并由客户端调用Windows API实现。全局变量管理是指管理全局变量,如已存在的参数的数目,当前激活窗口的ID等。后台脚本使用Chrome扩展中的OnMessage方法监听来自内容脚本的消息,使用WebSocket的onmessage方法监听来自客户端的消息,并通过WebSocket的send方法向客户端传递消息;最后,后台脚本和内容脚本均使用Chrome扩展中的storage.local.set和storage.local.get方法设置和得到全局变量。
客户端作为服务流程定义模块和服务流程管理模块的中介,使用WebSocket技术进行消息传递和交互。实现的主要作用包括①实现服务流程定义模块和服务流程管理模块的消息传递,②管理两个服务流程定义/管理模块的窗口显示以及模拟用户的操作(例如,用户在某个元素的操作台中进行的选择是输入123,客户端会利用操作系统的接口在该元素中输入123),③将生成的服务提交。
具体地,客户端能够实现消息转接、进程操作、交互行为模拟以及服务信息可视化展示及管理。
其中,消息转接用于作为服务流程定义模块和服务流程管理模块的消息传递的管道,从而实现两个模块之间的交互。进程操作用于实现对进程的基本操作,如将服务流程定义模块的浏览器窗口高度调整为当前屏幕的一半,并放置在当前屏幕的下方;将服务流程管理模块所在进程的窗口放置在屏幕的上方,以供用户同时对两个模块进行管理。交互行为模拟用于实现模拟键盘输入文字的操作。服务信息可视化展示及管理用于通过嵌入Chrome内核浏览控件对服务注册中心网站门户进行浏览,同时,作为服务流程管理页面的载体存在。
客户端使用C#和Net Framework框架实现,搭载WebSocket和JSON解析的动态链接库,实现消息的转接功能;通过调用Windows API,实现进程的相关操作;通过在C#窗体中嵌入CefSharp浏览器控件,实现在客户端中对服务注册中心中存在服务的管理,以及加载服务流程管理模块操作页面的功能。
服务流程管理模块是一个可以自定义Web数据采集流程的操作台,使服务提供者可以通过可视化的方式对流程中的各个操作选项进行增删改查,剪切复制的控制,同时修改各个选项中涉及的各项参数。服务流程管理模块的操作架构如图3所示。
如图3所示,服务流程管理模块同样由表现层和逻辑层构成。表现层负责根据用户的操作实时渲染服务操作流程图。如当用户在服务流程定义模块中点击“确认采集”操作后,如图4所示,服务操作流程图中应出现“提取数据”的操作节点,并在参数面板中显示用户提取的数据参数的信息。逻辑层负责对客户端传来的消息进行监听与处理,并协助用户修改操作参数和服务信息,以生成服务信息,也就是生成Web数据采集服务。
针对Web数据采集服务定义了三种类型的操作,分别为顺序操作、选择操作、循环操作。
如图4所示,在Web数据采集流程中,涉及到的顺序操作包含:打开网页,点击元素,提取数据,输入文字,识别验证码,切换下拉选项,移动到元素。
选择操作也即是条件判断操作,一个条件判断内可以包含多个条件分支,每个条件分支内可以包含任意的其他操作,包括选择,顺序和循环操作。在Web数据采集任务中,条件分支的条件包含:当前页面包含文本,当前页面包含元素,当前循环项包含文本,当前循环项包含元素,无条件(else)。
一个循环操作中同样可以包含任何的其他操作,配合循环内部操作中的“使用相对循环内的元素/XPath”选项,来满足各种各样定制化的需求。在Web数据采集任务中,循环方式包含:单个元素循环,不固定元素列表循环,固定元素列表循环,文本列表循环。
服务流程管理模块的表现层中包括的方法为新增操作、删除操作、移动操作、复制操作、新增条件分支和调整锚点操作。在流程中的删除、复制和剪切操作中,系统使用nowNode对象来存储用户当前选中的节点信息,使用nowArrow对象存储用户想要将节点放置的位置信息。新增条件判断操作时,会同时新增两个条件分支;删除循环节点时,循环内包含的所有节点都将被标记为不可用,从而避免在服务参数生成阶段生成已删除的输入输出参数;注意,在执行剪切操作时,节点不可以被剪切到自己的子孙节点中;复制节点时,需要对节点对象进行深复制,从而将节点内的所有参数拷贝给新节点;每次执行对节点的操作后,都会根据情况调整锚点的位置,并重绘流程图。
服务流程管理模块的逻辑层负包括的方法为消息监听与处理,操作参数处理和服务信息生成,具体来说,负责监听来自客户端的消息,从而将从服务流程定义模块中传递来的操作信息转化为操作节点插入到服务执行流程中。如接收两个参数,分别表示新增操作节点的选项类型及操作包含的相关参数(如提取数据操作中的数据字段信息),如果是用户直接在流程图中增加的节点,则参数将设置为默认值。最后,服务流程管理模块对nodeList中的各个节点进行遍历,从而将操作中涉及到的输入输出参数提取出来,作为最终生成服务的输入输出参数,并生成服务信息,提交给服务注册中心。
服务注册中心主要用于对服务信息进行管理和维护。主要包括服务管理模块和任务管理模块。服务管理模块用于对服务提供者通过服务生成子系统生成的服务信息进行管理,任务管理模块是根据服务请求者的服务调用请求将请求的服务信息转成任务信息后发送给服务调用子系统。
服务调用子系统主要对任务信息进行调用。具体包括请求参数分析模块、系统参数处理模块、程序操作处理模块、以及数据结果过滤模块。
其中,请求参数分析模块负责分析Web请求中的各项参数,并按照类型将参数分配给不同的处理模块进行处理。这里将Web请求中的参数分为以下三类,分别对应后面三个不同的处理模块:
(1)系统级别的请求参数:系统为所有的Web数据采集服务提供的公共的参数,如服务调用所需的API Key(密钥),最大的翻页次数,最大超时时间等。
(2)应用级别请求参数:即服务提供者在服务生成阶段定义的输入参数。
(3)过滤参数:用户对服务的返回数据进行过滤处理所需的参数。
系统参数处理模块负责对系统级别的参数进行处理,各项参数对应的处理逻辑在服务注册中心中定义和实现。举例来说:当用户提供的密钥正确时才启动执行。如果服务需要收费,或者限制次数,可在此模块中进行动态的扩展。
在本系统中,将所有操作选项抽象化为统一的数据结构进行处理,流程中任意的操作选项被称为一个“节点”,整个流程以树状结构存储。在程序执行阶段,程序操作处理模块将会从根节点开始依次读取并执行其子节点对应操作,以还原整个操作执行流程。程序操作处理模块对用户自定义的操作流程进行解析,如点击元素,提取数据和循环、判断等操作,并根据各操作的配置参数复现这些操作。即该模块负责复现用户定义好的提取流程,执行后将数据返还给数据结果过滤模块。
数据结果过滤模块,按照过滤参数对采集到的数据进行过滤和格式化处理。例如,如果输出的数据为商品的价格,如果定义的条件为价格高于35,则会将价格不符合要求的条目过滤掉。
综上,服务生成阶段的执行流程的简单描述如下:
(1)服务提供者输入Web页面的URL地址,发起服务生成请求。
(2)服务提供者在服务流程定义模块中的Web页面上以鼠标点击的方式选中鼠标所在位置的元素,并在操作台中选择执行相应的操作,从而在服务流程管理模块中生成对应的操作节点。
(3)服务提供者在服务流程管理模块中对生成的操作节点进行处理,如剪切、复制节点等,同时修改操作节点中相关的参数,如元素定位的XPath等。
(4)重复步骤(2)(3)以定义复杂的Web数据采集流程。
(5)服务提供者输入服务名称和描述,保存服务。
服务调用阶段的执行流程的简单描述如下:
(1)服务请求者以Web请求的方式调用Web数据采集服务。
(2)系统根据Web请求中服务的ID号从服务注册中心的服务集合中找到相应服务,并得到服务流程中各可输入参数的信息。
(3)系统根据Web请求中的输入参数对服务操作流程中的各可输入参数的默认值进行修改,并生成一个任务ID号,返回给服务请求者。
(4)服务请求者将步骤(3)中生成的任务ID号以Web请求的方式传递给远程采集程序,或通过进程调用的方式将ID号传递给本地采集程序,从而开始Web数据的采集。
(5)系统根据服务请求者在步骤(1)Web请求中设定的数据处理规则相关的输入参数,对提取到的数据进行过滤,并根据服务中的输出参数信息将数据以格式化的方式返回给服务请求者,完成数据采集任务。
下面以https://hz.58.com/chuzu/页面为例,解释系统运行规则,具体包括以下步骤:
服务提取阶段
用户在系统中输入58同城杭州地区房源搜索页面的URL:https://hz.58.com/chuzu/,并点击开始按钮发起服务生成请求。
服务流程定义模块和服务流程管理模块会同时启动。用户使用服务流程管理模块中的工具箱,在“打开网页”节点下拖入一个循环操作,并设置循环类型为:文本列表,并在下方的文本内容框中输入“阿里巴巴”、“网易”两行文字。这里输入的文字可以在服务调用阶段被其他值替换。
在服务流程定义模块中,鼠标选中搜索框,并点击操作台中的“输入文字”操作,接下来,在服务流程管理模块的参数面板中,勾选新生成的“输入文字”操作节点的“使用循环中的文本”选项,使得该操作中接收的文字由循环操作指定,即输入循环中的“阿里巴巴”等文字。
鼠标选中“搜房源”按钮,并点击操作台中的“点击元素”操作,系统将会执行点击元素的操作,并展示房源信息,同时在服务流程管理模块中生成“点击元素”的操作节点。
鼠标选中下一页按钮,并在操作台中点击“循环点击该元素”操作。此时,服务流程定义模块中将会出现循环操作节点,这里,我们将参数面板中右下角的参数“最多执行循环次数”设置为5。
选中页面中第一个房源信息链接,服务流程定义模块将会自动匹配到其他房源信息的链接并标记,此时,可以通过点击操作台中的“选中全部”操作,或者鼠标直接选中第二个房源信息链接元素,来选中所有的房源信息链接。
点击操作台中的“循环点击每个链接”选项。系统将会自动打开第一个链接对应的房源信息页面。注意,如果这里直接点击“采集数据”操作,系统将会对每个房源链接的文本和地址进行采集。
从服务管理模块的工具箱中向当前锚点拖入一个条件判断操作,并将第一个条件分支的条件选项设置为“当前循环项包含文本”,“包含的文字/元素XPath”输入框中的值设置为“单间”。
在服务流程定义模块中,选中页面的房源信息块,并可同时选中页面的其他想要采集的信息(如经纪人信息),点击“采集该元素的文本”→“确认采集”选项。此时,在服务流程管理模块的第一个条件分支内生成了“提取数据”的节点。
用户在服务流程管理模块对相关参数进行修改,如各操作节点的选项名称,数据提取操作中各输出字段参数名等,最后,点击工具箱中的保存服务按钮,在输入服务的名称和描述后,将生成的Web服务提交给服务注册模块。
由于58同城房源数据采集服务不属于高分相关服务,因此,我们将服务保存到普通服务注册模块平台,最终生成的58同城房源信息采集服务的基本信息。
由生成的服务信息中可知,服务含有两个输入参数:待打开网页的URL和欲循环搜索的文本,分别代表要打开的网页URL列表和循环搜索中使用到的搜索值,这里即地段名。在服务调用阶段,两个输入参数对应的Web请求中的请求参数名分别为URLList_0和loopText_1。
生成的服务包含四个输出参数,其含义分别是房源标题、房源描述、经纪人名称以及经纪人主页的链接地址,这些参数名称可被用户修改。
本系统可以对生成的Web服务进行修改,并提供了一个服务调用页面供用户使用。
本次58同城房源信息采集任务由3个循环,1个条件判断,2个条件分支和6个顺序操作节点组成。相关操作的解释如下:
1、最外层的循环负责循环的在搜索框中输入值并提交表单,即文本列表循环类型,文本由用户在服务调用阶段指定。
2、中间的循环负责循环点击下一页的操作,当满足指定的循环次数或者找不到下一页按钮的时候,退出循环。
3、最内层的循环负责循环点击每个房源信息链接并采集数据。
4、在最内层的循环里包含一个条件判断操作,该条件判断节点内包含两个条件分支,执行时按照从左到右的顺序进行条件分支的判断,即当第一个条件分支的条件“当前循环项中包含‘单间’二字”被满足时,执行第一个条件分支中的操作;否则,执行第二个条件分支中的操作。本例中只有第一个条件分支内含有操作,因此,该流程成功实现了只采集具有单间标识的房源描述信息。
至此,数据采集需求已被全部满足,并以Web服务的形式存储到服务注册模块,等待用户调用。
服务调用阶段
1、本系统为用户提供了调用操作界面。这里,我们将循环搜索参数的值修改为“云栖小镇”和“西溪湿地”,以查找云栖小镇和西溪湿地地区的房源信息。
2、用户点击“获得任务ID”按钮,向服务注册模块提交服务调用请求。这里,系统以POST方式将图中参数提交给服务注册模块,用户也可以自行以POST的请求方式提交调用请求。服务注册模块后台根据用户提供的服务ID和输入参数,定位并修改服务参数后,生成一条Web数据采集任务,并将任务ID返回给用户。
3、用户拿到任务ID号后,可根据自身需求,进行本地数据采集或者云端执行,即调用远程服务器进行采集。点击本地执行任务或者云端执行任务按钮,即可等待程序自动的按照用户的需求,采集相应的数据,并存储到指定位置。
至此,58同城房源信息采集案例的服务生成和调用流程已全部介绍完毕,通过本例,读者可以更好的理解本发明的定义和相关功能的作用,以及系统展现出的易用性、实用性。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种自定义提取流程的服务封装系统,其特征在于,包括服务生成子系统,服务注册中心、服务调用子系统;
所述服务生成子系统为服务提供者提供自定义流程编辑操作窗口,服务提供者通过该自定义流程编辑操作窗口自定义编辑流程,形成一个操作流程作为服务信息发送到服务注册中心进行保存;
所述服务注册中心对接收的服务信息进行管理和维护;
所述服务调用子系统为服务调用者提供调用平台,服务调用者通过该调用平台调用保存在服务注册中心的服务;
所述服务生成子系统包括服务流程定义模块、客户端和服务流程管理模块;
所述服务流程定义模块用于加载浏览器中的任意页面,并提供可操作的执行方法和参数记录以实现自动编辑定义流程;
所述客户端用作服务流程定义模块和服务流程管理模块之间的中介,能够实现消息转接、进程操作、交互行为模拟以及服务信息可视化展示及管理;
所述服务流程管理模块是一个可以自定义Web数据采集流程的操作台,使服务提供者可以通过可视化的方式对流程中的各个操作选项进行增删改查,剪切复制的控制,同时修改各个选项中涉及的各项参数。
2.如权利要求1所述的自定义提取流程的服务封装系统,其特征在于,所述服务流程定义模块的扩展程序由内容脚本和后台脚本两个组件组成,两组件之间进行消息传递;
内容脚本将操作台嵌入到浏览器中加载的任意页面中,并提供编辑操作;
后台脚本负责维护一个全局的环境,还负责和整个操作流程中任意页面内的内容脚本进行交互,并将需要记录的操作信息传递给客户端。
3.如权利要求2所述的自定义提取流程的服务封装系统,其特征在于,所述内容脚本由表现层和逻辑层组成,表现层负责实现对界面的各种可视化操作,逻辑层则负责处理相关操作的底层逻辑;
内容脚本的表现层中包含的方法有元素待选、元素选中、操作台显示、扩大选区、撤销选择、取消选择、选中子元素、同类型元素自动匹配、同类型元素手动匹配;
内容脚本的逻辑层中的方法包括数据参数生成、参数示例数据删除、确认采集、鼠标移动到元素/鼠标点击元素、循环点击元素、输入文字/切换下拉选项。
4.如权利要求2所述的自定义提取流程的服务封装系统,其特征在于,服务流程定义模块的后台脚本的方法包括消息监听与处理、消息传递、全局变量管理。
5.如权利要求1所述的自定义提取流程的服务封装系统,其特征在于,所述服务流程管理模块由表现层和逻辑层构成;
服务流程管理模块的表现层中包括的方法为新增操作、删除操作、移动操作、复制操作、新增条件分支和调整锚点操作;
服务流程管理模块的逻辑层包括的方法为消息监听与处理,操作参数处理和服务信息生成。
6.如权利要求1所述的自定义提取流程的服务封装系统,其特征在于,所述服务注册中心包括服务管理模块和任务管理模块;
服务管理模块用于对服务提供者通过服务生成子系统生成的服务信息进行管理;
任务管理模块是根据服务请求者的服务调用请求将请求的服务信息转成任务信息后发送给服务调用子系统。
7.如权利要求1所述的自定义提取流程的服务封装系统,其特征在于,所述服务调用子系统包括请求参数分析模块、系统参数处理模块、程序操作处理模块、以及数据结果过滤模块;
请求参数分析模块负责分析Web请求中的各项参数,并按照类型将参数分配给不同的处理模块进行处理;
系统参数处理模块负责对系统级别的参数进行处理,各项参数对应的处理逻辑在服务注册中心中定义和实现;
程序操作处理模块对用户自定义的操作流程进行解析,并根据各操作的配置参数复现这些操作;
数据结果过滤模块按照过滤参数对采集到的数据进行过滤和格式化处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010526593.0A CN111797340B (zh) | 2020-06-10 | 2020-06-10 | 一种自定义提取流程的服务封装系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010526593.0A CN111797340B (zh) | 2020-06-10 | 2020-06-10 | 一种自定义提取流程的服务封装系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111797340A CN111797340A (zh) | 2020-10-20 |
CN111797340B true CN111797340B (zh) | 2022-05-17 |
Family
ID=72804240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010526593.0A Active CN111797340B (zh) | 2020-06-10 | 2020-06-10 | 一种自定义提取流程的服务封装系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111797340B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114647466A (zh) * | 2020-12-17 | 2022-06-21 | 国信君和(北京)科技有限公司 | 页面内容提取方法、装置、设备和计算机可读存储介质 |
CN116125931B (zh) * | 2023-03-07 | 2024-03-15 | 南京翼辉信息技术有限公司 | 一种基于rpc的工业流程控制系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188617A (zh) * | 2007-12-20 | 2008-05-28 | 浙江大学 | 一种流程式服务的注册与发现方法 |
CN109165213A (zh) * | 2018-09-29 | 2019-01-08 | 浙江大学 | 基于自定义Groovy脚本配置文件的数据预处理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6574661B1 (en) * | 1997-09-26 | 2003-06-03 | Mci Communications Corporation | Integrated proxy interface for web based telecommunication toll-free network management using a network manager for downloading a call routing tree to client |
US7472349B1 (en) * | 1999-06-01 | 2008-12-30 | Oracle International Corporation | Dynamic services infrastructure for allowing programmatic access to internet and other resources |
-
2020
- 2020-06-10 CN CN202010526593.0A patent/CN111797340B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188617A (zh) * | 2007-12-20 | 2008-05-28 | 浙江大学 | 一种流程式服务的注册与发现方法 |
CN109165213A (zh) * | 2018-09-29 | 2019-01-08 | 浙江大学 | 基于自定义Groovy脚本配置文件的数据预处理方法 |
Non-Patent Citations (1)
Title |
---|
Service Wrapper: a system for converting web;Naibo Wang等;《http://arXiv:1910.07786》;20191017;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111797340A (zh) | 2020-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9021442B2 (en) | Dynamic scenario testing of web application | |
Di Lucca et al. | WARE: A tool for the reverse engineering of web applications | |
CN101488151B (zh) | 一种聚合Web站点内容的系统和方法 | |
US20080010338A1 (en) | Method and apparatus for client and server interaction | |
Adam et al. | A new PHP web application development framework based on MVC architectural pattern and ajax technology | |
US20130283141A1 (en) | Client Agnostic Spatial Workflow Form Definition and Rendering | |
WO2008003699A1 (en) | Method for inheriting a wiki page layout for a wiki page | |
JP2008305411A (ja) | 機能強化されたウィジェットコンポジションプラットフォーム | |
CN101101604A (zh) | 使用浏览器操纵内容的命令的方法与系统 | |
CN101490674A (zh) | 用于使用维基网页来定义维基网页布置的方法 | |
CN112199086A (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
US20100070856A1 (en) | Method for Graphical Visualization of Multiple Traversed Breadcrumb Trails | |
CN111797340B (zh) | 一种自定义提取流程的服务封装系统 | |
US20120166977A1 (en) | User programming access to data model in user interface design | |
US20080010386A1 (en) | Method and apparatus for client wiring model | |
US20210117313A1 (en) | Language agnostic automation scripting tool | |
US10776351B2 (en) | Automatic core data service view generator | |
Al-Hawari | Software design patterns for data management features in web-based information systems | |
Bayer et al. | Design and development of a web-based EPANET model catalogue and execution environment | |
JPH10187512A (ja) | データベース構築及びデータベース操作用プログラム生成方法 | |
JP4681673B1 (ja) | 動作検証装置、動作検証方法および動作検証プログラム | |
US20170357488A1 (en) | Rapid visualization rendering package for statistical programming language | |
CN111813410A (zh) | 浏览器数据可视化开发用于多页面联合展示的方法和装置 | |
CA3203793C (en) | System and method for real-time, dynamic creation, delivery, and use of customizable web applications | |
Au-Yeung | Vue. js 3 By Example: Blueprints to learn Vue web development, full-stack development, and cross-platform development quickly |
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 |