CN103853717B - 网络爬虫*** - Google Patents

网络爬虫*** Download PDF

Info

Publication number
CN103853717B
CN103853717B CN201210495699.4A CN201210495699A CN103853717B CN 103853717 B CN103853717 B CN 103853717B CN 201210495699 A CN201210495699 A CN 201210495699A CN 103853717 B CN103853717 B CN 103853717B
Authority
CN
China
Prior art keywords
ajax
data
crawl
webpage
nodes
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
Application number
CN201210495699.4A
Other languages
English (en)
Other versions
CN103853717A (zh
Inventor
刘涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Jianfu Chain Management Co.,Ltd.
Original Assignee
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Shangke Information Technology Co Ltd
Priority to CN201210495699.4A priority Critical patent/CN103853717B/zh
Publication of CN103853717A publication Critical patent/CN103853717A/zh
Application granted granted Critical
Publication of CN103853717B publication Critical patent/CN103853717B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

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

本发明公开了一种网络爬虫,包括一内核以及一Ajax抓取配置,该内核以及该Ajax抓取配置均集成有htmlunit,该Ajax抓取配置用于指定一网页的地址以及该网页中的待抓取的数据,该内核用于驱动搜索引擎,并基于该Ajax抓取配置提取该待抓取的数据。本发明能够支持Ajax的执行方式抓取网页页面的数据,并且支持异步请求的技术,可以使用JavaScript向服务器提出请求并处理响应,而且不会阻塞用户。

Description

网络爬虫***
技术领域
本发明涉及一种网络爬虫***,特别是涉及一种能够支持Ajax爬取并通过异步请求从网页中提取数据的网络爬虫***。
背景技术
传统的网络爬虫能够实现非Ajax(一种创建交互式网页应用的网页开发技术)的爬取过程,即不需要模拟浏览器加载页面并且执行页面中的JavaScript(一种动态、弱类型、基于原型的语言,通过浏览器可以直接执行)脚本。而传统的网络爬虫虽然能够抓取网页中的数据,但是只能抓取同步请求的数据,并不能及时的对异步请求进行响应和处理,导致可能会阻塞用户。
发明内容
本发明要解决的技术问题是为了克服现有技术中传统的网络爬虫不能对异步请求进行响应和处理导致会阻塞用户的缺陷,提供一种能够支持Ajax爬取并通过异步请求从网页中提取数据的网络爬虫***。
本发明是通过下述技术方案来解决上述技术问题的:
本发明提供了一种网络爬虫***,其特点在于,其包括一内核以及一Ajax抓取配置,该内核以及该Ajax抓取配置均集成有htmlunit(一种开源的java(一种可以撰写跨平台应用软件的面向对象的程序设计语言)页面分析工具),该Ajax抓取配置用于指定一网页的地址以及该网页中的待抓取的数据,该内核用于驱动搜索引擎,并基于该Ajax抓取配置提取该待抓取的数据。
与传统的网络爬虫相比,本发明的网络爬虫***的内核及Ajax抓取配置都集成有htmlunit,并且支持直接用脚本语言使用htmlunit的功能。这样,该Ajax抓取配置在执行方式上就需要一个模拟的浏览器加载该网页的页面并且执行该网页需要执行的JavaScript脚本(其中包括异步请求),并且在加载完成之后,还支持通过该Ajax抓取配置来模拟用户操作,例如点击按钮、提交表单等,然后再根据元素路径提取该网页的页面中的元素所需要的值,例如内容、链接、图像识别结果等。
这样,通过XmlHttpRequest对象(Ajax的网页应用程序架构的一项关键功能,能够提供在不重新加载页面的情况下更新网页的功能)向服务器发送异步请求,从服务器获取数据,然后用JavaScript来操作DOM(文档对象模型)而更新页面,而JavaScript则可以及时向服务器提出异步请求和处理响应,而不会阻塞用户。
通过上述方式就能够以Ajax形式来抓取网页中的数据,这些数据主要是指商品信息,包括商品名称、价格、图片、库存状态、用户评论等内容。
较佳地,该Ajax抓取配置的root(根)节点下设置有Ajax节点,该内核还用于在读取该Ajax节点的内容后加载该网页的页面并执行包含有异步请求的JavaScript脚本以抓取该待抓取的数据。
较佳地,该Ajax节点包括操作类元素和提取类元素,该操作类元素用于模拟用户的操作,该提取类元素用于指定该待抓取的数据。
其中,网络爬虫的实现都是基于一种树形结构的数据,该树形结构中的每一个节点都可以被当作是一棵子树的根节点,即root节点。而在传统的网络爬虫的抓取配置中,定义了两种方式进行数据的爬取,第一种是纯脚本的爬取方式,即如果在抓取配置的root节点下存在一个Custom节点(一种节点的名称)的话,网络爬虫将直接执行该Custom节点中的脚本内容,若该root节点下存在一个Getting节点(一种节点的名称),网络爬虫则按照抓取配置中的定义对该Getting节点进行解析执行。
而在本发明中,该root节点下还设置有Ajax节点,该内核在读取到该Ajax节点后就会以上述的Ajax抓取配置的执行方式来抓取该网页中的数据。其中的Ajax的初始化链接仍然由传输的参数url(网页地址)来决定,即调用htmlunit提供的接口加载文档以及Ajax请求的数据,知道服务器返回结束请求的标识。
而该Ajax节点具体包括操作类元素和提取类元素,这两类元素可以交叉存在,没有先后顺序,可以按照实际情况安排操作和提取的顺序。操作类元素包含用户常用的操作,例如点击按钮、提交表单等操作,而在操作某个元素之前,首先要定位这个元素,而定位元素的方法有两种,一种是通过Xpath(一种在XML(可扩展标记语言)文档中查找信息的语言),另一种是通过CSS(级联样式表)的Selector(选择符)属性,而这两种只需出现其中一种即可,并且上述的定位元素的方法都属于本领域的公知技术,在此就不再赘述。
较佳地,该网络爬虫还包括一安装包,该安装包用于负责该网络爬虫的更新和启动。
本发明的积极进步效果在于:本发明能够支持Ajax的执行方式抓取网页页面的数据,并且支持异步请求的技术,可以使用JavaScript向服务器提出请求并处理响应,而且不会阻塞用户。
附图说明
图1为本发明的一较佳实施例的网络爬虫***的结构图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
如图1所示,本发明的网络爬虫***包括一安装包1、一内核2以及一Ajax抓取配置3。
该安装包1负责该网络爬虫的更新和启动,以及连接任务服务器的工作,该内核2以及该Ajax抓取配置3均集成有htmlunit,该Ajax抓取配置3能够指定一网页的地址以及该网页中的待抓取的数据,该内核2则能够驱动搜索引擎,并基于该Ajax抓取配置3提取该待抓取的数据。
与传统的网络爬虫相比,本发明的网络爬虫的内核2及Ajax抓取配置3都集成有htmlunit,并且支持直接用脚本语言使用htmlunit的功能。这样,该Ajax抓取配置3在执行方式上就需要一个模拟的浏览器加载该网页的页面并且执行该网页需要执行的JavaScript脚本(其中包括异步请求),并且在加载完成之后,还支持通过该Ajax抓取配置3来模拟用户操作,例如点击按钮、提交表单等,然后再根据元素路径提取该网页的页面中的元素所需要的值,例如内容、链接、图像识别结果等。
这样,通过XmlHttpRequest对象向服务器发送异步请求,从服务器获取数据,然后用JavaScript来操作DOM而更新页面,而JavaScript则可以及时向服务器提出异步请求和处理响应,而不会阻塞用户。
通过上述方式就能够以Ajax形式来抓取网页中的数据,这些数据主要是指商品信息,包括商品名称、价格、图片、库存状态、用户评论等内容。
该Ajax抓取配置3的root节点下设置有Ajax节点,该内核2还在读取该Ajax节点的内容后加载该网页的页面并执行包含有异步请求的JavaScript脚本以抓取该待抓取的数据。
其中,网络爬虫的实现都是基于一种树形结构的数据,该树形结构中的每一个节点都可以被当作是一棵子树的根节点,即root节点。而在传统的网络爬虫的抓取配置中,定义了两种方式进行数据的爬取,第一种是纯脚本的爬取方式,即如果在抓取配置的root节点下存在一个Custom节点的话,网络爬虫将直接执行该Custom节点中的脚本内容,若该root节点下存在一个Getting节点,网络爬虫则按照抓取配置中的定义对该Getting节点进行解析执行。
而在本发明中,该root节点下还设置有Ajax节点,该内核2在读取到该Ajax节点后就会以上述的Ajax抓取配置3的执行方式来抓取该网页中的数据。其中的Ajax的初始化链接仍然由传输的参数url来决定,即调用htmlunit提供的接口加载文档以及Ajax请求的数据,知道服务器返回结束请求的标识。
而该Ajax节点具体包括操作类元素和提取类元素,这两类元素可以交叉存在,没有先后顺序,可以按照实际情况安排操作和提取的顺序。操作类元素包含用户常用的操作,例如点击按钮、提交表单等操作,而在操作某个元素之前,首先要定位这个元素,而定位元素的方法有两种,一种是通过Xpath,另一种是通过CSS的Selector属性,而这两种只需出现其中一种即可,并且上述的定位元素的方法都属于本领域的公知技术,在此就不再赘述。
其中,操作类元素包含常用的操作,例如点击按钮、提交表单等等。在操作某个元素之前,首先要定位这个元素,而定位这个元素的方法有两种,一种是通过XPath,一种是通过CSS的Selector,分别对应于任意一个操作类元素的节点的path(路径)属性和selector属性,两者只需要出项一种即可,其中包括了以下的子元素:
单击元素:click,触发一个单击的事件,例如:<click path="/div/a"/>
双击元素:dbclick,触发一个双击的事件,例如:<dbclick selector="#abc"/>
右击元素:rclick,触发鼠标右键点击的事件,例如:<rclick selector="#abc"/>
鼠标移动:mouseMove,触发鼠标移动的事件,例如:<mouseMove selector="#abc"/>
鼠标进入:moveOver,触发鼠标进入的事件,例如:<mouseOver selector="#abc"/>
鼠标移出:moveOut,触发鼠标移出的事件,例如:<mouseOut selector="#abc"/>
输入:type,模拟键盘输入,例如填写表单:<type selector="#abc"value="something"/>
触发其它事件:fireEvent,触发元素的其它事件,包括:submit,reset,change,load,unload,focus,blur,keydown,keypress,input,keyup,beforeunload,propertychange,readystatechange,DOMContentLoaded(上述的触发元素的事件都是本领域的技术人员根据需要能够自定义的,如reset表示重置,input表示输入等,本领域技术人员也都能够理解各个触发元素的事件所执行的操作)等,例如:<fireEvent selector="#abc"type="submit"/>
其它操作类型:其它不常见操作类型还可以根据实际情况来扩展,为了使得配置支持所有的操作类型,我们通过定义action节点来支持其它操作,例如:
<action selector="#abc"do="element.click();"/>其中的属性do是基于获取到的页面元素的一系列操作(用JavaScript脚本进行方法调用)。
而提取类元素针对一个元素,我们定义多种需要提取的值,例如:
<extract selector="#abc"elementIndex="1"type="text"name="text"/>
可以提取ID(身份标识号码)为abc的元素所包含的文本内容,elementIndex表示取第几个元素,type的取值可以是:text,html,attribute,分别表示提取元素的包含内容、HTML(超文本标记语言)源代码和某个属性,如果是提取某个属性,则应说明要提取的属性的名称,例如:
<extract selector="#abc"type="attribute"name="url"attribute="href"/>
特别的,如果元素是一个img(图片的格式)的话,type取值也可以为OCR(光学字符识别),爬虫将识别图片内容并返回识别结果。
在通过上述方法进行提取内容之后,还可以使用简单的方法对数据进行后处理,例如:
<extract selector="#abc"type="attribute"name="url"attribute="href"format="substring"start="1"len="3"/>
<extract selector="#abc"type="attribute"name="url"attribute="href"format="replaceFirst"regex="from_this"replacement="to_this"/>
<extract selector="#abc"type="attribute"name="url"attribute="href"format="replaceAll"regex="from_this"replacement="to_this"/>
<extract selector="#abc"type="attribute"name="url"attribute="href"format="escape"/>
<extract selector="#abc"type="attribute"name="url"attribute="href"format="unescape"/>
上述的selector都是CSS的标准selector,如果要使用jsoup(JavaScript ObjectNotation with Padding,一种轻量级的数据交换格式,可以让网页从别的网域得到资料,以实现跨域数据交互)的相关特性,可以使用类似于现有的复杂配置方式,例如:
其中不包含type(类型)属性,但存在GettingCode、Name、DataType、Format(GettingCode,Name,DataType,Format均为子节点的名称)四种子节点。
一个典型的Ajax抓取配置的配置实例为:
即在百度上搜索yihaodian并且获取第一个返回结果的链接。
于是我们就可以得到如下的结果:
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

Claims (3)

1.一种网络爬虫***,其特征在于,其包括一内核以及一Ajax抓取配置,该内核以及该Ajax抓取配置均集成有htmlunit,该Ajax抓取配置用于指定一网页的地址以及该网页中的待抓取的数据,该内核用于驱动搜索引擎,并基于该Ajax抓取配置提取该待抓取的数据;该Ajax抓取配置的root节点下设置有Ajax节点,该内核还用于在读取该Ajax节点的内容后加载该网页的页面并执行包含有异步请求的JavaScript脚本以抓取该待抓取的数据。
2.如权利要求1所述的网络爬虫***,其特征在于,该Ajax节点包括操作类元素和提取类元素,该操作类元素用于模拟用户的操作,该提取类元素用于指定该待抓取的数据。
3.如权利要求1-2中任意一项所述的网络爬虫***,其特征在于,该网络爬虫***还包括一安装包,该安装包用于负责该网络爬虫***的更新和启动。
CN201210495699.4A 2012-11-28 2012-11-28 网络爬虫*** Active CN103853717B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210495699.4A CN103853717B (zh) 2012-11-28 2012-11-28 网络爬虫***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210495699.4A CN103853717B (zh) 2012-11-28 2012-11-28 网络爬虫***

Publications (2)

Publication Number Publication Date
CN103853717A CN103853717A (zh) 2014-06-11
CN103853717B true CN103853717B (zh) 2018-10-12

Family

ID=50861385

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210495699.4A Active CN103853717B (zh) 2012-11-28 2012-11-28 网络爬虫***

Country Status (1)

Country Link
CN (1) CN103853717B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104111836A (zh) * 2014-07-14 2014-10-22 浪潮软件集团有限公司 一种网络采集处理异步加载数据的方法
CN106020897A (zh) * 2016-05-30 2016-10-12 深圳市华傲数据技术有限公司 网络爬虫的动态管理方法、装置及***
CN106649567A (zh) * 2016-11-15 2017-05-10 杭州安恒信息技术有限公司 一种基于浏览器内核的网络爬虫***
CN110069683B (zh) * 2017-09-18 2021-08-13 北京国双科技有限公司 一种基于浏览器爬取数据的方法及装置
CN107729385A (zh) * 2017-09-19 2018-02-23 杭州安恒信息技术有限公司 一种采集动态网页完整数据内容的方法
CN109951457A (zh) * 2019-03-04 2019-06-28 广州博士信息技术研究院有限公司 一种基于html5特性的防爬虫***及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536389B1 (en) * 2005-02-22 2009-05-19 Yahoo ! Inc. Techniques for crawling dynamic web content
CN101515300A (zh) * 2009-04-02 2009-08-26 阿里巴巴集团控股有限公司 一种Ajax网页内容的抓取方法及***
CN102609518A (zh) * 2012-02-09 2012-07-25 清华大学 多状态ajax网页内容获取方法及***

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988100B2 (en) * 2001-02-01 2006-01-17 International Business Machines Corporation Method and system for extending the performance of a web crawler

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536389B1 (en) * 2005-02-22 2009-05-19 Yahoo ! Inc. Techniques for crawling dynamic web content
CN101515300A (zh) * 2009-04-02 2009-08-26 阿里巴巴集团控股有限公司 一种Ajax网页内容的抓取方法及***
CN102609518A (zh) * 2012-02-09 2012-07-25 清华大学 多状态ajax网页内容获取方法及***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
社交网络数据获取技术与实现;胡亚楠;《中国优秀硕士学位论文全文数据库信息科技辑》;20120515;论文正文第10-17页 *

Also Published As

Publication number Publication date
CN103853717A (zh) 2014-06-11

Similar Documents

Publication Publication Date Title
CN103853717B (zh) 网络爬虫***
Mesbah et al. Migrating multi-page web applications to single-page Ajax interfaces
CN102597993B (zh) 利用统一资源标识符管理应用状态信息
CN102349066B (zh) 在浏览器中的新标签页面和书签工具条
US8196039B2 (en) Relevant term extraction and classification for Wiki content
WO2018081469A1 (en) Systems and methods for discovering automatable tasks
CN104217036B (zh) 一种网页内容提取方法和设备
US20070198727A1 (en) Method, apparatus and system for extracting field-specific structured data from the web using sample
KR101569984B1 (ko) 웹 스크래핑 추출 데이터 설정 방법
CA2911670A1 (en) System and method for identifying web elements present on a web-page
CN104375858B (zh) 多浏览器平台执行javascript脚本的方法及装置
CN102262635A (zh) 一种网页爬虫***及方法
CN103377128A (zh) 用于Web应用的竞争检测的方法和***
JP4935399B2 (ja) セキュリティ運用管理システム、方法およびプログラム
CN106209863B (zh) 一种基于全站扫描的网站安全监测方法
CN111381809B (zh) 一种焦点页面的查找方法及装置
JP5136087B2 (ja) クライアント装置およびクライアント制御プログラム
CN114398138A (zh) 界面生成方法、装置、计算机设备和存储介质
US6772395B1 (en) Self-modifying data flow execution architecture
CN113849718A (zh) 互联网烟草科技情报信息自动采集装置、方法与存储介质
Shao et al. Webevo: taming web application evolution via detecting semantic structure changes
JP6763433B2 (ja) 情報収集システム、情報収集方法、及び、プログラム
JP5858479B2 (ja) 端末装置及びプログラム
Alashqar Automatic generation of uml diagrams from scenario-based user requirements
CN103399746B (zh) 一种便于二次开发的信息管理***及开发方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160914

Address after: East Building 11, 100195 Beijing city Haidian District xingshikou Road No. 65 west Shan creative garden district 1-4 four layer of 1-4 layer

Applicant after: Beijing Jingdong Shangke Information Technology Co., Ltd.

Address before: 201203 Shanghai city Pudong New Area Zu Road No. 295 Room 102

Applicant before: Niuhai Information Technology (Shanghai) Co., Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201112

Address after: No.8-6, Putou South Road, Haicang District, Xiamen City, Fujian Province

Patentee after: Xiamen xinjianfu e-commerce Co., Ltd

Address before: East Building 11, 100195 Beijing city Haidian District xingshikou Road No. 65 west Shan creative garden district 1-4 four layer of 1-4 layer

Patentee before: BEIJING JINGDONG SHANGKE INFORMATION TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210512

Address after: 361000 No.8, Putou South Road, Haicang District, Xiamen City, Fujian Province

Patentee after: Xiamen Jianfu Chain Management Co.,Ltd.

Address before: No.8-6, Putou South Road, Haicang District, Xiamen City, Fujian Province 361022

Patentee before: Xiamen xinjianfu e-commerce Co., Ltd

TR01 Transfer of patent right