一种基于b2b平台的多线程数据抓取方法

文档序号:10512388阅读:273来源:国知局
一种基于b2b平台的多线程数据抓取方法
【专利摘要】本发明公开了一种基于B2B平台的多线程数据抓取方法,1)将B2B平台的首页、多级类型目录结构作为目标对象,对网页源文件进行分析;2)在URL处理器中分析出需要的目标规则;3)通过HTTP解析器,从隧道协议中获取一定格式的数据;4)对每次URL请求分配新的线程,通过多线程模式并发处理;5)通过分类管理器进行管理每一种商品大类到小类的规则;6)对该线程超时的设置;7)根据所述固定格式数据,将所有提取的商品数据内容保存至数据库;本发明提供的基于B2B平台的多线程数据抓取方法,在大数据并发实时采集、多线程数据抓取上有显著的效果。
【专利说明】
一种基于B2B平台的多线程数据抓取方法
技术领域
[0001]本发明涉及一种基于B2B平台的多线程数据抓取方法。
【背景技术】
[0002]电子商务发展至今,通过了解竞争对手方面,各项信息内容,包括产品、销量,用户数等;这些数据只有在平台上通过技术手段进行获取。
[0003]当竞争对手网站出现信息产品信息,或者更新产品信息时,通过我们B2B平台的多线程数据抓取方法,将很高效获取竞争对手的所有数据。
[0004]国内现有的数据抓取方法,特别是针对B2B平台的采集,以及在大数据并发计算中,再实时性以及大数据量的情况下,容易出现很多问题或者无法保证实时性,比如:
[0005]中国专利CN201210141520.5,给出了一种数据抓取系统,所述系统包括钩子加载模块、抓取钩子模块、配置文件生成模块。钩子加载模块用以根据进程数量生成设定数量的抓取钩子模块,配置给需要抓取的进程。抓取钩子模块用以监控其对应进程中业务数据的传递,并抓取相应的业务数据。提出的数据抓取系统,可方便快捷地抓取其他C/S结构业务系统的数据,并提供给其他业务系统录入。可抓取C/S构架中的WINDOWS窗口中的控件数据,对其他业务系统进行窗口数据抓取,并将抓取到的数据按照可配置的格式写入文件,提供给其他系统的数据的输入。该方法属于在C/S架构中进行数据抓取,无法适用于网页以及B2B的网站中。
[0006]中国专利CN201510378181.6,提出的方法包括:接收针对各个平台所需的目标数据分别设置的数据抓取参数;根据针对各个平台设置的所述数据抓取参数执行相应的数据抓取规则,在互联网上抓取所述平台所需的目标数据;对抓取的所述目标数据进行展示;接收对展示的所述目标数据的筛选操作,并且将筛选后的所述目标数据发布到所述平台的页面专区中。简化了运营人员获取目标数据的操作步骤,降低了运营人员获取目标数据的工作量,同时大幅度提高了发布的文章资讯的数量和质量,平均每位运营人员每天可以发布优质文章的数量大大增加。该方法主要解决目标数据筛选的操作问题,以及对专有目标数据进行处理,在B2B网站中无法实施该内容。

【发明内容】

[0007]发明目的:为了解决B2B网站在多线程抓取和对隐藏内容的调用获取,本发明提供一种基于B2B平台的多线程数据抓取方法,针对B2B平台多级调用,嵌套调用获取内容的数据抓取,以及隐含内容的抓取方法。B2B平台的多线程数据抓取方法针对各脚本文件,包括样式,嵌套调用等难以解决获取数据的问题,并且通过该方法高效的解决了该问题。
[0008]本发明的技术方案是,一种基于B2B平台的多线程数据抓取方法,其特征在于:包括如下步骤:
[0009](I)将B2B平台的首页、多级类型目录结构作为目标对象,对网页源文件进行分析,对B2B平台数据源的商品数据进行实时采集的方法为:
[0010]在源文件中剔除无用的信息内容,剔除方式通过我们的标签库来递归调用;
[0011]源文件分析出有效URL,将URL转移至下一步骤;
[0012](2)在URL处理器中分析出们需要的目标规则,再做一次URL请求,获取下一层的源码内容,将源码内容放置缓冲区,然后将缓冲区的内容转移至下一目标任务进行处理;对该源码内容部分代码过滤其中不需要的内容,如广告信息、版权信息、标签标记等,以达到去伪存精的目的;找到源码内容循环分页的规律,并将源码内容进行分离。
[0013](3)通过HTTP解析器,从隧道协议中获取一定格式的数据(键值对形式数据,包装数组结构数据,以及特征字符的结构数据),进行提取为我们所需要的目标数据结果,再次对该结果进行格式筛选,去除无效字符;开启多个发出HTTP请求的线程,每个URL请求只请求资源文件的相同格式部分内容,合并每个线程下载的文件;为了在很多情况下减少发送请求,同时在许多情况下可以不需要发送全部html内容。减少了网络回路的数量,也减少了网络应用的带宽。
[0014](4)线程处理,对每次URL请求分配新的线程,通过多线程模式并发处理。
[0015]通过线程管理器实现多线程调用操作,当某一线程失败时将自动挂起;并且每个请求需要一个单独的线程完成;在线程池中,线程数一般是固定的,线程总数不超过线程池中所能容纳线程的数目,当服务器不利用线程池时处理这些请求时则请求线程总数不大于50000;
[0016](5)分类管理器,通过分类管理器进行管理每一种商品大类到小类的规则,当数据匹配规则成功后,将首先获取大类商品源码,再递归调用子类商品源码文件。
[0017](6)通过对该线程超时的设置,当该超时区间时间内检测不到该线程是否执行成功,那么对该线程处理标记进行设置为失败,当在系统空闲状态时自动触发该线程重新启动。线程池将基于识别直接处理,或增加工作者数处理,进入待处理队列,其他线程池会直接将任务放入待处理队列,等待工作线程去取出执行。
[0018](7)通过固定格式、指键值对形式数据,包装数组结构数据,以及特征字符的结构数据格式,将所有提取的商品数据内容保存至数据库中。
[0019]有益效果:本发明提供了一种基于B2B平台的多线程数据抓取方法,针对B2B平台多级调用,嵌套调用获取内容的数据抓取,以及隐含内容的抓取方法,且针对各脚本文件,包括样式、嵌套调用等难以解决获取数据的问题,高效的解决了该问题。
【附图说明】
[0020]图1为本发明方法的实施流程图。
【具体实施方式】
[0021]本发明基于B2B平台的多线程数据抓取方法,包括如下步骤:
[0022](I)将B2B平台的首页、多级类型目录结构作为目标对象,对网页源文件进行分析,对数据源的数据进行实时采集的方法为:
[0023]在源文件中剔除无用的信息内容,剔除方式通过标签库来递归调用;
[0024]所述标签库为一系列的Html常用标签字符类型,该类型存放于内存数组中,通过循环调用匹配,最终剔除无用信息。
[0025]源文件分析出有效URL,将URL转移至下一步骤;
[0026](2)在URL处理器中分析出我们需要的目标规则,再做一次URL请求,获取下一层的源码内容,将内容放置缓冲区,我们将缓冲区的内容转移至下一目标任务进行处理;
[0027]对该部分代码过滤其中不需要的内容,如广告信息、版权信息、标签标记等,以达到去伪存精的目的。找到循环分页的规律,并将内容进行分离。
[0028](3)通过HTTP解析器,从隧道协议中获取一定格式的数据,即键值对形式数据,包装数组结构数据,以及特征字符的结构数据进行提取为我们所需要的目标数据结果,再次对该结果进行格式筛选。开启多个发出HTTP请求的线程,每个HTTP请求只请求资源文件的一部分,合并每个线程下载的文件,为了在很多情况下减少发送请求,同时在许多情况下可以不需要发送完整响应。减少了网络回路的数量,也减少了网络应用的带宽。
[0029](4)线程处理,对每次url请求分配新的线程,通过多线程模式并发处理。
[0030]通过线程管理器实现多线程调用操作,当线程失败时将自动挂起。当一个服务器一天要处理50000个请求时,并且每个请求需要一个单独的线程完成。在线程池中,线程数一般是固定的,线程总数不超过线程池中线程的数目,当服务器不利用线程池时处理这些请求则线程总数为50000。一般线程池大小是远小于50000。利用线程池不会为了创建50000线程而在处理请求时浪费时间,从而提高效率。
[0031](5)分类管理器,通过分类管理器进行管理每一种商品大类到小类的规则,当数据匹配规则成功后,将首先获取大类源码,再递归调用子类源码文件。
[0032](6)通过对该线程超时的设置,当该超时区间时间内检测不到该线程是否执行成功,那么对该线程处理标记进行设置为失败,当在系统空闲状态时自动触发该线程重新启动。线程池将基于识别直接处理,或增加工作者数处理,进入待处理队列,其他线程池会直接将任务放入待处理队列,等待工作线程去取出执行。
[0033](7)通过所述固定格式将所有提取的内容保存至数据库中。
[0034]上述HTTP解析的步骤,(I)解析Html超文本标记语言源文件,包括Html文件中js脚本文件,以及CSS文件等,从中进行处理;(2)通过源文件解析器进行处理,按不同的格式进行解析处理;(3)通过http包处理器获取js脚本返回的隐藏内容;http为超文本传输协议,主要用于从WWW服务器传输超文本到本地浏览器;(4)隐藏内容的匹配与处理;(5)最终数据处理整合(合并);(6)线程管理器并发处理新的任务。
[0035]所述解析处理,通过若干规则,包括正则,不规则数组结构,根据键值对的方式进行匹配处理,输出匹配结果。
[0036]所述隐藏内容,是通过一组URL访问进行获得的数据,从该数据中遍历出当前规则中所需数据,将该隐藏内容进行解析处理,输出匹配结果。
[0037]最终数据将各存放于内存中的匹配结果,通过键值对的形式提取出结果数据,再包装于数组中,将行数据存放于数据库中。
[0038]虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
【主权项】
1.一种基于B2B平台的多线程数据抓取方法,其特征在于:包括如下步骤: (1)将B2B平台的首页、多级类型目录结构作为目标对象,对网页源文件进行分析,对B2B平台数据源的商品数据进行实时采集的方法为:在源文件中剔除无用的信息内容,剔除方式通过的标签库来递归调用;源文件分析出有效URL,将URL转移至下一步骤; (2)在URL处理器中分析出需要的目标规则,再做一次URL请求,获取下一层的源码内容,将源码内容放置缓冲区,然后将缓冲区的内容转移至下一目标任务进行处理;对该源码内容部分代码过滤其中不需要的内容,包括广告信息、版权信息、标签标记,以达到去伪存精的目的;找到源码内容循环分页的规律,并将源码内容进行分离; (3)通过HTTP解析器,从隧道协议中获取一定格式的数据、一定格式表示为键值对形式的数据,包装数组结构的数据、以及特征字符的结构数据;数据提取为所需要的目标数据结果,再次对该结果进行格式筛选,去除无效字符;开启多个发出HTTP请求的线程,每个URL请求只请求资源文件的一部分,合并每个线程下载的文件; (4)线程处理,对每次URL请求分配新的线程,通过多线程模式并发处理; 通过线程管理器实现多线程调用操作,当某一线程失败时将自动挂起;并且每个请求需要一个单独的线程完成;在线程池中,线程数是固定的,线程总数不超过线程池中所能容纳线程的数目,当服务器不利用线程池时处理这些请求时则请求线程总数不大于50000; (5)分类管理器,通过分类管理器进行管理每一种商品大类到小类的规则,当数据匹配规则成功后,将首先获取大类商品源码,再递归调用子类商品源码文件; (6)通过对该线程超时的设置,当该超时区间时间内检测不到该线程是否执行成功,那么对该线程处理标记进行设置为失败,当在系统空闲状态时自动触发该线程重新启动;线程池将基于识别直接处理,或增加工作者数处理,进入待处理队列,其他线程池会直接将任务放入待处理队列,等待工作线程去取出执行; (7)根据所述固定格式数据,将所有提取的商品数据内容保存至数据库中。2.根据权利要求1的方法,其特征是HTTP解析的步骤,(I)解析Html超文本标记语言源文件,包括Html文件中js脚本文件和css文件,从中进行处理;(2)通过源文件解析器进行处理,按不同的格式进行解析处理;(3)通过http包处理器获取js脚本返回的隐藏内容;(4)隐藏内容的匹配与处理;(5)最终数据处理整合;(6)线程管理器并发处理新的任务。
【文档编号】G06F17/30GK105868412SQ201610272886
【公开日】2016年8月17日
【申请日】2016年4月28日
【发明人】徐飞
【申请人】焦点科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1