CN109471966B - 一种自动获取目标数据源的方法及系统 - Google Patents
一种自动获取目标数据源的方法及系统 Download PDFInfo
- Publication number
- CN109471966B CN109471966B CN201811274838.4A CN201811274838A CN109471966B CN 109471966 B CN109471966 B CN 109471966B CN 201811274838 A CN201811274838 A CN 201811274838A CN 109471966 B CN109471966 B CN 109471966B
- Authority
- CN
- China
- Prior art keywords
- data
- webpage
- page
- analysis
- parser
- 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
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种自动获取目标数据源的方法,包括如下步骤:对网页数据进行解析;对解析后的数据进行结构化或半结构化形成可分析数据;基于解析后获得的可用于分析的数据进行数据分析以确定是否需要获得该网页数据;利用数据采集器获取数据源网页数据并将获取的网页数据保存在关系型数据库或者文件中。采用该方法,在对网页数据进行爬取之前,首先对网页数据进行可分析化,并对其进行分析,获得用户感兴趣的网页页面数据,而不同于传统的先爬取数据保存,然后进行分析的方法。这么做的优点也是非常明显的,它能够大幅减少后续开发人员的庞大数据分析挖掘工作,提高效率。本发明进一步涉及一种自动获取目标数据源的系统。
Description
技术领域
本发明涉及数据采集技术领域,具体涉及一种自动获取目标数据源的方法及系统。
背景技术
随着互联网技术的发展,现在已经进入到大数据时代。随着数据量的指数级增长,各个公司对于大数据研究和应用也越来越广泛,由于绝大多数数据的获取方式都是通过互联网,而互联网上的数据种类繁多,且又有结构化和非结构化的数据,给用户的采集和分析带来很多不便。
目前的数据采集方式均是通过网络数据爬虫将目标网站的数据全部爬取下来保存,然后再进行相应的数据清理等处理工作得到感兴趣的数据并保存以备用。这种方法是最简便的,但是带来的问题是数据量巨大占用空间,而且由于不同类型的数据都存储在一起,给后续的处理工作也带来很多不便。
发明内容
有鉴于此,本发明提供一种自动获取目标数据源的方法,其特征在于,包括如下步骤:对网页数据进行解析;对解析后的数据进行结构化或半结构化形成可分析数据;基于解析后获得的可用于分析的数据进行数据分析以确定是否需要获得该网页数据;利用数据采集器获取数据源网页数据并将获取的网页数据保存在关系型数据库或者文件中。
优选地,通过htmlunit进行数据的解析形成字串格式。
优选地,可以采用另一种方法进行数据解析,即利用htmlparser将html页面中的标签按树形结构解析成一个一个结点,一种类型的结点对应一个类,通过调用其方法访问标签中的内容。该方法包括:从页面中提取出子链接以及解析网页内容;其中提取页面子链接的步骤为:用被提取的网页的url实例化一个Parser;实例化Filter,设置页面过滤条件;用Parser提取页面中所有通过Filter的结点,得到NodeList;遍历NodeList,调用Node的相应方法得到其中的链接,加入子链接的集合;返回子链接集合;其中解析网页内容的步骤为:读取html文件,获得页面编码;用页面编码实例化html文件的Parser;对需要提取的结点设置相应的Filter;根据给定的Filter,用Parser解析html文件;提取结点中的文本内容。
进一步地,所述的数据分析方法为关键词分析、或相似文本分析等。
进一步,所述的解析和结构化半结构化过程在设定的缓存中进行。
根据本发明的另一方面,还提供一种自动获取目标数据源的系统,其特征在于,包括:数据解析模块,用于对目标网页数据进行解析;数据处理模块,用于将解析后的数据进行结构化或半结构化处理;数据分析模块,用于对经过数据处理模块处理后的结构化或半结构化数据进行分析,以确定是否为需要采集的数据;数据采集器,用于对需要采集的数据进行采集并存储。
优选地,采用封装的htmlunit执行目标网页的数据解析。
进一步地,还可以利用htmlParser执行目标网页的数据解析。
从上述技术方案可以看出,本发明提供的数据自动采集方法及系统,不同于传统的先爬取数据再进行分析的方法,而是先对数据进行解析,获得可分析的数据,对数据进行分析后只爬取那些需要爬取的目标数据。这样可以为后续的处理带来很大的方便,而且不会加重工作量,是对现有的数据采集方法的优化。
附图说明
为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例提供的自动获取目标数据源的方法的流程图。
图2是本发明实施例提供的自动获取目标数据源的系统结构示意图。
图3是本发明实施例提供的htmlunit执行js的过程。
具体实施方式
为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。因此,以下对在附图中提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
如图1所示,本发明实施例提供一种自动获取目标数据源的方法,包括:对网页数据进行解析;对解析后的数据进行结构化或半结构化形成可分析数据;基于解析后获得的可用于分析的数据进行数据分析以确定是否需要获得该网页数据;利用数据采集器获取数据源网页数据并将获取的网页数据保存在关系型数据库或者文件中。
S101,对网页数据进行解析;网页数据一般为html格式或xml格式,在数据采集之前,首先对目标网页的数据进行解析,解析的方法可以采用htmlunit,它相当于一个没有界面的浏览器,可以进行浏览器操作,它采用了HttpClient和Java自带的网络api结合来实现;它将一个网页封装成了一个对象,不仅保存了这个网页对象,还存有这个网页的所有基本操作甚至事件。htmlunit执行js时,会将整个页面下载下来,而很多时候,我们执行js,只是因为需要执行后生成url,不必要的频繁页面下载不但会增加程序运行时长,也会加重网络负载,此时可以采用生成一个伪response,而不是去真正获取页面的response,用来构造所有的新页面。具体实现办法为:如果当前线程是第一次执行该下载方法,就不对代码做修改,让其生成一个真正的response,然后,将该response对象保存起来,待该线程后续再执行js进入该方法,不再生成response对象,而是将之前保存起来的response拿出来直接使用,并修改对应的url为执行js之后生成的url即可。js执行完成之后,返回ScriptResult对应的url,就是执行js之后生成的url,但如果以这个url去拿页面的源码的话,会得到“错误”的数据,这是因为每次都用了同一个response,而不是url页面对应的url。但这么做的初衷是为了得到正确的url,而不去download整个页面,所以这种”错误“不会影响程序的运行及后面的结果。
另一种可选的方案是,解析过程采用htmlparser包,它提供方便、简洁的处理html文件的方法,将html页面中的标签按树形结构解析成一个一个结点,一种类型的结点对应一个类,通过调用其方法可以轻松地访问标签中的内容;采用hemlparser包的处理主要包括从页面中提取出子链接和解析网页内容;
其中提取页面子链接的步骤为:用被提取的网页的url实例化一个Parser;实例化Filter,设置页面过滤条件;用Parser提取页面中所有通过Filter的结点,得到NodeList;遍历NodeList,调用Node的相应方法得到其中的链接,加入子链接的集合;返回子链接集合;
其中解析网页内容的步骤为:读取html文件,获得页面编码;用页面编码实例化html文件的Parser;对需要提取的结点设置相应的Filter;根据给定的Filter,用Parser解析html文件;提取结点中的文本内容。
S102,对解析后的数据进行结构化或半结构化形成可分析数据;采用htmlunit解析后的数据大多为非结构化的数据,需要对这些数据进行进一步处理变成可分析的结构化或半结构化数据,以便为后续确定需要获取的目标页面比较分析提供可分析文档。
S103,基于解析后获得的可用于分析的数据进行数据分析以确定是否需要获得该网页数据;在通过步骤S102获得可用于分析的数据之后,采用文档相似性计算的方法对目标文档进行分析,确定该文档是否与当前需要的主题相关或近似。
计算文档相似性可以采用基于向量空间模型的相似度计算方法,它一般包括如下三个步骤:1,特征项的提取与选择;2,对象的表达;3,选用合适的计算模型进行计算。在本专利中,可以采用NLP领域常用的文档相似性计算模型进行分析以确定结果。例如:余弦相似性、简单共有词、海明距离等等。
S104,利用数据采集器获取数据源网页数据并将获取的网页数据保存在关系型数据库或者文件中。在这一步中,将满足获取要求的网页数据通过网络爬虫的方式进行爬取,由于网页数据为动态加载,通过htmlunit动态加载渲染得到网页数据之后进行解析,并通过数据分析确定爬取目标数据,此时可以采用jsoup爬虫获取整个页面的dom对象,通过这个对象来获取所需要的页面所有的参数。对于获得的有用数据,直接保存在关系型数据库或者文件中,以备后续使用。
综上所述,在上述实施例中,本发明提供的自动获取目标数据源的方法通过在下载之前对数据的处理,可以直接获得需要的结果,从而无需在爬取大量的网页数据之后再来进行处理。通过这样的方法,一是可以准确获取目标动态网页的所有数据;二是虽然在爬取网页数据之前有额外的工作量,但是所有步骤均是在缓存中进行,并不会造成性能的大幅降低。这种方法相较于传统的网络数据爬取办法,具有较高的操作性,也是对现有方法的一大改进。
如图2所示,本发明实施例提供一种自动获取目标数据源的系统,包括:数据解析模块201;数据处理模块202;数据分析模块203;数据采集器204。
数据解析模块201,用于对目标网页数据进行解析;
数据处理模块202,用于将解析后的数据进行结构化或半结构化处理;
数据分析模块203,用于对经过数据处理模块处理后的结构化或半结构化数据进行分析,以确定是否为需要采集的数据;
数据采集器204,用于对需要采集的数据进行采集并存储。
综上所述,在上述实施例中,本发明提供的自动获取目标数据源的系统通过数据解析模块、数据处理模块和数据分析模块,在目标网页被爬取下载之前对是否为用户所需的数据进行分析处理判断,最后的数据采集仅采集用户感兴趣的目标网页数据,而对不感兴趣的数据进行排除,这样能够大大减少后续的处理步骤,提高数据自动获取效率。
图3所示为htmlunit执行js的过程。从图3可以看出htmlunit执行js时,会将整个页面下载下来,而本专利中执行js,只需要执行后后生成url,不必要的频繁页面下载不但会增加程序运行时长,也会加重网络负载。本发明采用的是生成一个伪response,而不是去真正获取页面的response,用来构造所有的新网页。得到一个页面的response,然后根据该response生成一个LoadJob对象,放入loadQueue_队列,后续从队列中取出该LoadJob对象,完成生成新页面并加载至浏览器的工作。具体方法为:如果当前线程是第一次执行该下载方法,就不对htmlunit代码做修改,让其生成一个真正的response,然后,将该response对象保存起来,待该线程后续再执行js进入该方法,不再生成response对象,而是将之前保存起来的response取出直接使用,并修改对应的url为执行js之后生成的url即可,js执行完成之后,返回ScriptResult对应的url,即执行js之后生成的url,但如果去取页面的源码的话,会得到”错误“的数据,这是因为每次都用了同一个response,而不是url页面对应的url。因为这么做的目的是得到正确的url,而不去下载整个页面,所以这种”错误“不会影响程序和结果。
以上所述仅为本发明的优选实施方式而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (2)
1.一种自动获取目标数据源的方法,其特征在于,包括如下步骤:
通过htmlunit对网页数据进行解析形成字串格式,具体为:如果当前线程是第一次执行下载方法,就不对代码做修改,让其生成一个真正的 response,然后,将该 response 对象保存起来,待该线程后续再执行 js 进入该方法,不再生成 response 对象,而是将之前保存起来的 response 拿出来直接使用,并修改对应的 url 为执行 js 之后生成的 url即可;或,利用htmlparser将html页面中的标签按树形结构解析成一个一个结点,一种类型的结点对应一个类,通过调用其方法访问标签中的内容,从页面中提取出子链接的方法为:用被提取的网页的url实例化一个Parser;实例化Filter,设置页面过滤条件;用Parser提取页面中所有通过Filter的结点,得到NodeList;遍历NodeList,调用Node的相应方法得到其中的链接,加入子链接的集合;返回子链接集合;解析网页内容的方法为:读取html文件,获得页面编码;用页面编码实例化html文件的Parser;对需要提取的结点设置相应的Filter;根据给定的Filter,用Parser解析html文件;提取结点中的文本内容;
对解析后的数据进行结构化或半结构化形成可分析数据;
基于解析后获得的可用于分析的数据进行数据分析以确定是否需要获得该网页数据;其中所述的数据分析方法为关键词分析、或相似文本分析;
利用数据采集器获取数据源网页数据并存储关系型数据库或者文件中。
2.如权利要求1所述的方法,其特征在于,所述的解析和结构化半结构化过程在设定的缓存中进行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811274838.4A CN109471966B (zh) | 2018-10-30 | 2018-10-30 | 一种自动获取目标数据源的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811274838.4A CN109471966B (zh) | 2018-10-30 | 2018-10-30 | 一种自动获取目标数据源的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109471966A CN109471966A (zh) | 2019-03-15 |
CN109471966B true CN109471966B (zh) | 2022-07-15 |
Family
ID=65666376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811274838.4A Active CN109471966B (zh) | 2018-10-30 | 2018-10-30 | 一种自动获取目标数据源的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109471966B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666471A (zh) * | 2020-05-21 | 2020-09-15 | 平安科技(深圳)有限公司 | 信息采集方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694658A (zh) * | 2009-10-20 | 2010-04-14 | 浙江大学 | 基于新闻去重的网页爬虫的构建方法 |
CN104699797A (zh) * | 2015-03-18 | 2015-06-10 | 浪潮集团有限公司 | 一种网页数据结构化解析方法和装置 |
CN106202108A (zh) * | 2015-05-06 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 网络爬虫抓取任务分配方法与装置及数据抓取方法与装置 |
CN108090104A (zh) * | 2016-11-23 | 2018-05-29 | 百度在线网络技术(北京)有限公司 | 用于获取网页信息的方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060161564A1 (en) * | 2004-12-20 | 2006-07-20 | Samuel Pierre | Method and system for locating information in the invisible or deep world wide web |
CN102184227B (zh) * | 2011-05-10 | 2013-05-08 | 北京邮电大学 | 一种面向web服务的通用爬虫引擎系统及其工作方法 |
CN104182412B (zh) * | 2013-05-24 | 2017-08-04 | 中国移动通信集团安徽有限公司 | 一种网页爬取方法及系统 |
CN104978408A (zh) * | 2015-08-05 | 2015-10-14 | 许昌学院 | 基于Berkeley DB数据库的主题爬虫系统 |
CN106649810B (zh) * | 2016-12-29 | 2019-05-28 | 山东舜网传媒股份有限公司 | 基于Ajax的新闻网页动态数据的抓取方法及系统 |
-
2018
- 2018-10-30 CN CN201811274838.4A patent/CN109471966B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694658A (zh) * | 2009-10-20 | 2010-04-14 | 浙江大学 | 基于新闻去重的网页爬虫的构建方法 |
CN104699797A (zh) * | 2015-03-18 | 2015-06-10 | 浪潮集团有限公司 | 一种网页数据结构化解析方法和装置 |
CN106202108A (zh) * | 2015-05-06 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 网络爬虫抓取任务分配方法与装置及数据抓取方法与装置 |
CN108090104A (zh) * | 2016-11-23 | 2018-05-29 | 百度在线网络技术(北京)有限公司 | 用于获取网页信息的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109471966A (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101984429B (zh) | 获取目标页面的方法、装置、搜索引擎和浏览器 | |
JP5695027B2 (ja) | Ajaxウェブページコンテンツを取得する方法およびシステム | |
US8424004B2 (en) | High performance script behavior detection through browser shimming | |
US20110173178A1 (en) | Method and system for obtaining script related information for website crawling | |
CN105243159A (zh) | 一种基于可视化脚本编辑器的分布式网络爬虫系统 | |
US11263062B2 (en) | API mashup exploration and recommendation | |
CN102662966B (zh) | 一种面向主题的获取动态页面内容的方法及系统 | |
US20030040887A1 (en) | System and process for constructing and analyzing profiles for an application | |
CN108415804B (zh) | 获取信息的方法、终端设备及计算机可读存储介质 | |
CN109144567B (zh) | 跨平台的网页渲染方法、装置、服务器及存储介质 | |
CN101441629A (zh) | 一种非结构化网页信息的自动采集方法 | |
CN101571860A (zh) | 动态网页生成方法和装置、提取结构化数据的方法和装置 | |
CN112612943A (zh) | 一种基于异步处理框架的具有自动测试功能的数据爬取方法 | |
CN101763432A (zh) | 一种轻量级网页动态视图快速构建方法 | |
CN112307292A (zh) | 基于高级持续性威胁攻击的信息处理方法及系统 | |
CN114528457A (zh) | Web指纹检测方法及相关设备 | |
CN110989992B (zh) | 资源处理方法及装置 | |
CN110334302B (zh) | 复杂Web应用前端运行时分析方法 | |
CN109471966B (zh) | 一种自动获取目标数据源的方法及系统 | |
CN114003835A (zh) | 页面渲染方法、装置、设备及存储介质 | |
Liu et al. | An XML-enabled data extraction toolkit for web sources | |
KR100503776B1 (ko) | 웹 어플리케이션 성능 분석 및 튜닝 방법 | |
CN110851678A (zh) | 一种爬取数据的方法和装置 | |
KR100880709B1 (ko) | 자바스크립트 함수 자동 분석 방법 및 상기 방법을 이용한능동형 웹 수집 로봇 시스템 | |
KR101231329B1 (ko) | 모바일 환경에서의 웹 데이터 추출을 위한 시스템 |
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 |