首页 / 专利库 / 商业 / 电子商务 / 基于机器学习的自适应网络爬虫方法

基于机器学习的自适应网络爬虫方法

阅读:124发布:2024-01-20

专利汇可以提供基于机器学习的自适应网络爬虫方法专利检索,专利查询,专利分析的服务。并且本 发明 是一种基于 机器学习 的自适应 网络爬虫 方法,由于目前的网络爬虫程序的编写需要 软件 开发人员通过查询繁琐的页面代码并研究规则,没有自适应的程序自动引导爬虫进行工作。同时,在 电子 商务领域也并没有这种触及。因此要解决的技术问题是通过机器学习技术对大量数据进行挖掘,从而 定位 到某一未知网页上与该内容相关的信息。使用机器学习与 数据挖掘 方法来解决这一问题,主要的技术步骤为:获取数据、特征提取、异构数据归一化、 训练数据 构建、自适应训练、学习方法验证以及自适应模式生成,用于对所爬取 网站 的页面代码提取 位置 特征并进行自适应训练,对 电子商务 领域的自适应网络爬虫的研究起到了一定的作用。,下面是基于机器学习的自适应网络爬虫方法专利的具体信息内容。

1.一种基于机器学习的自适应网络爬虫方法,其特征在于该方法流程如下:
步骤1.获取数据:获取到浏览器插件提供的整个页面代码和需要爬取的部分代码在整个页面的位置,位置表示为数组形式,数组中的每一个数字表示该行代码在整个页面代码中的第几个标签下的第几个;其中,位置数组[1,2,6,3,1,2,1,3,2,2,1],数组中第一位的1表示为整个页面代码中最外面的第一层标签,即为html;第二位的2表示在上一层的html标签下的第二个标签body;第三位的6表示在上一层body标签下的第6个标签,即为div,以此类推;
步骤2.特征提取:使用页面代码中每一个标签的美国信息交换标准代码值来作为一个特征,用于该页面在数据集中的表示方法,以满足输入要求;使用标准代码提取模将获取到整个页面的所有标签标准代码的和值并输出,同时统计整个页面的标签数量;
步骤3.异构数据的归一化过程:由于每个页面的结构和书写方式不同,因此其页面代码的标签数量也不同,表现出了数据的异构性;由于在机器学习与数据挖掘方法中需要整齐的数据进行自适应的构建,因此将标签数量归一化;经过大部分的统计结果,认为1500个标签是个合理的值,因此统一将1500作为一个标准,如果某一页面的标签数量恰好为1500,则直接进入步骤5进行训练数据的构建;如果标签数量少于1500,则进入步骤4补齐数据,以满足数据挖掘和机器学习方法的要求;如果标签数量多余1500,则只截取前1500个,舍弃多余的;
步骤4.模糊数据补充:对于标签数量少于1500的页面,使用稀疏数据表示方法,即用问号“?”补齐到1500;当文件格式满足要求后,进入到步骤5;
步骤5.训练数据构建:数据挖掘和机器学习方法中唯一识别的文件由两部分组成,分别为文件头和数据,文件头包括关系声明@relation和属性声明@attribute,属性声明部分声明属性名称和类型,数据部分由数据声明@data引导,数据部分中的每一行为一个实例,数据内容分别对应各个声明的属性;创建训练数据集时,声明关系,属性和数据,在这里,有
1501个属性,分别为设定的1500个标签的标准代码和值以及某一位的位置值,也就是说,根据已知的11位位置信息,需要创建11个训练集对应于11个输入文件分别进行训练,每个训练集中有1500个标签和一位位置信息,进行11次训练和测试,最终输出11位的位置值;
同时,也要创建测试集的文件,文件中只有一个测试实例,同样有1501个属性,其中未知、需要最终输出的位置用问号表示,对应于最终输出结果中的预测值。
步骤6.自适应训练:载入训练集,选择IBk分类算法进行训练,训练后保存模型;
步骤7.学习方法验证:在训练结果的基础上或载入已保存的模型,接着载入测试集文件,运行后在输出结果中提取测试集中未知目标数据对应的预测值;
步骤8.自适应模式生成:根据训练生成的位置数组,还原到整个页面中对应于该位置的部分代码,根据爬虫程序规则提取程序中需要补充的模式,代入到爬虫代码中,即可生成自适应爬虫程序。

说明书全文

基于机器学习的自适应网络爬虫方法

技术领域

[0001] 本发明涉及一种计算机技术,主要利用数据挖掘与机器学习方法来解决网络爬虫在电子商务领域的自适应匹配问题,属于计算机技术、数据挖掘、机器学习及网络爬虫交叉技术应用领域。

背景技术

[0002] 随着互联网信息量的爆炸式增长,以及电商网站的不断兴起,越来越多的人开始关注如何在大数据量的电商网络中找到自己喜欢的商品,对于软件行业专业人员也越来越倾向于在大数据量中做自动化的处理,以提高信息检索效率并达到针对性推荐信息的目的。爬虫作为网页信息获取的主要途径也为更多人所熟知。然而,现阶段的网络爬虫程序的编写通常需要专业的软件开发人员通过查询页面代码、研究其对应的规则,并且对于不同的网站、页面也需要编写不同的爬虫程序,并没有一个能够具有自适应功能的程序来自动引导爬虫爬取同构信息。同时,随着各大电商相继崛起,现代社会的人们已经更倾向于在线购物,这也成为越来越无法阻挡的趋势,用户如何在大数据量的电商网站中找到需要的信息是一个很严峻的挑战。因此,本发明进行的是将爬虫程序自动化输出和电商领域相结合,进行了针对于电商的自适应爬虫方法研究,用于自动输出某一电商网站上特定信息的爬虫程序,而不需要人工进行有针对性地编写爬虫程序。
[0003] 爬虫程序,能够自动化浏览网络并且能够自动采集所有可以访问到的页面信息。根据研究,目前业界对爬虫技术及自适应爬虫的分析研究大多局限在某些爬虫算法的改进,如性能方面、解决页面和统一资源定位符(URL)的主题相关性判别的问题等;或是专使用特制爬虫爬取某一领域内的信息和特定数据,如地理位置信息、网络社交信息等;或是在爬取过程中提高搜索引擎的缓存效率等。其中绝大多数是基于搜索引擎的爬虫。因此本发明使用机器学习引导爬虫程序具有自适应功能,从而爬取不同页面。
[0004] 机器学习是一门结合多领域学科的交叉技术,涉及到统计学、数学、哲学、信息论等方面。机器学习能够引导计算机模拟和实现人的思想过程或行为,不断改善其自身已有的结构,最终能够获取到新的知识、拥有新的行为。

发明内容

[0005] 技术问题:本发明提出一种基于机器学习的自适应网络爬虫方法,将网络爬虫在数据挖掘与机器学习技术下进行自适应训练,能够自动输出爬虫程序需要的模式(pattern),从而实现网络爬虫的自适应性。
[0006] 技术方案:本发明具体用到的机器学习方法为K邻近分类算法(IBk)。K邻近分类算法可以根据每个测试样本的样本信息来学习模型,可以更好地拟合局部的样本特性。经过实践证明,K邻近分类算法较为合适,准确率较高。
[0007] 本发明所述的基于机器学习的自适应网络爬虫方法,实现了一个可以自动引导爬虫,使其具有自适应功能,爬取不同页面的自适应程序。我们通过对不同电商网站的研究,使用机器学习和数据挖掘方法输入京东商城和一号店网站的笔记本电脑价格信息,最终实现的效果是:通过机器学习过程对输入数据的分析,使得爬虫程序对爬取的不同网站具有自适应性。
[0008] 本发明所述的基于机器学习的自适应网络爬虫方法流程如下:
[0009] 步骤1.获取数据:获取到浏览器插件提供的整个页面代码和需要爬取的部分代码在整个页面的位置,位置表示为数组形式,数组中的每一个数字表示该行代码在整个页面代码中的第几个标签下的第几个;其中,位置数组[1,2,6,3,1,2,1,3,2,2,1],数组中第一位的1表示为整个页面代码中最外面的第一层标签,即为html;第二位的2表示在上一层的html标签下的第二个标签body;第三位的6表示在上一层body标签下的第6个标签,即为div,以此类推;
[0010] 步骤2.特征提取:使用页面代码中每一个标签的美国信息交换标准代码(ASCII码)值来作为一个特征,用于该页面在数据集中的表示方法,以满足输入要求;使用标准代码提取模将获取到整个页面的所有标签标准代码的和值并输出,同时统计整个页面的标签数量;
[0011] 步骤3.异构数据的归一化过程:由于每个页面的结构和书写方式不同,因此其页面代码的标签数量也不同,表现出了数据的异构性;由于在机器学习与数据挖掘方法中需要整齐的数据进行自适应的构建,因此将标签数量归一化;经过大部分的统计结果,认为1500个标签是个合理的值,因此统一将1500作为一个标准,如果某一页面的标签数量恰好为1500,则直接进入步骤5进行训练数据的构建;如果标签数量少于1500,则进入步骤4补齐数据,以满足数据挖掘和机器学习方法的要求;如果标签数量多余1500,则只截取前1500个,舍弃多余的;
[0012] 步骤4.模糊数据补充:对于标签数量少于1500的页面,使用稀疏数据表示方法,即用问号“?”补齐到1500;当文件格式满足要求后,进入到步骤5;
[0013] 步骤5.训练数据构建:数据挖掘和机器学习方法中唯一识别的文件由两部分组成,分别为文件头和数据,文件头包括关系声明(@relation)和属性声明(@attribute),属性声明部分声明属性名称和类型,数据部分由数据声明(@data)引导,数据部分中的每一行为一个实例,数据内容分别对应各个声明的属性;创建训练数据集时,声明关系,属性和数据,在这里,有1501个属性,分别为设定的1500个标签的标准代码和值以及某一位的位置值,也就是说,根据已知的11位位置信息,需要创建11个训练集对应于11个输入文件分别进行训练,每个训练集中有1500个标签和一位位置信息,进行11次训练和测试,最终输出11位的位置值;
[0014] 例如,经过归一化和训练数据构建后,某一行训练数据即为:
[0015] 437,402,423,423,546,423,……,?,?,?,1
[0016] 表示某一网页中的所有标签标准代码和值,数量不足1500的使用问号补充,最后的数字1即为位置数组中的第一位。
[0017] 同时,也要创建测试集的文件,文件中只有一个测试实例,同样有1501个属性,其中未知、需要最终输出的位置用问号表示,对应于最终输出结果中的预测值。
[0018] 步骤6.自适应训练:载入训练集,选择IBk分类算法进行训练,训练后保存模型;经过实践证明,该方法较为合适,准确率较高。
[0019] 步骤7.学习方法验证:在训练结果的基础上(或载入已保存的模型),接着载入测试集文件,运行后在输出结果中提取测试集中未知目标数据对应的预测值;
[0020] 步骤8.自适应模式生成:根据训练生成的位置数组,还原到整个页面中对应于该位置的部分代码,根据爬虫程序规则提取程序中需要补充的模式,代入到爬虫代码中,即可生成自适应爬虫程序。
[0021] 有益效果:本发明所述的基于机器学习的自适应网络爬虫方法,将网络爬虫与机器学习技术相结合,应用于电子商务领域,通过提取网页特征,对其在机器学习及数据挖掘分析过程下进行自适应训练,使得网络爬虫程序对爬取的不同网站具有一定的自适应性。
[0022] 具体来说,本发明所述的方法具有如下的有益效果:
[0023] (1)本发明所述方法通过机器学习过程对输入数据的分析,使得爬虫程序对爬取的不同网站具有自适应性。
[0024] (2)本发明所述方法能够在大数据量的电商网络中自适应爬取所需数据,提高了信息检索效率,降低了专业爬虫开发人员的时间成本。
[0025] (3)本发明所述方法通过对用户在网站上所关注的数据的分析,直接得到其他未浏览网站上的相关数据呈现给用户,具有一定的易用性。附图说明
[0026] 图1是基于机器学习自适应网络爬虫方法的流程图
[0027] 图2是以K邻近分类算法为例的训练结果图。
[0028] 图3是以K邻近分类算法为例的测试结果图。

具体实施方式

[0029] 下面对本发明附图的某些实施方式作更详细的描述。在本例中:已知A、B网页HTML代码,自适应输出C网页中的爬虫模式。
[0030] 根据图1,本发明建立在数据挖掘及机器学习技术的基础上,具体实施方式有:
[0031] 1.获取数据:
[0032] 获取到浏览器插件提供的整个页面代码和需要爬取的部分代码在整个页面的位置,位置表示为数组形式,数组中的每一个数字表示该行代码在整个页面代码中的第几个标签下的第几个。例如,位置数组[1,2,6,3,1,2,1,3,2,2,1],数组中第一位的1表示为整个页面代码中最外面的第一层标签,即为html;第二位的2表示在上一层的html标签下的第二个标签body;第三位的6表示在上一层body标签下的第6个标签,即为div,以此类推;
[0033] 由此,在A网页中,获取到的位置数组为[1,2,6,2,2,1,2,1,2,1,1],B网页中获取到的位置数组为[1,2,59,3,1,2,1,3,2,2,2]。
[0034] 2.特征提取:
[0035] 我们将文件中所有标签的美国信息交换标准代码(ASCII)码的和值作为一个特征提取出来,用于表示某一特定的网页和所需爬取的位置部分的关系。因此编写这样一个特征提取模块,用于读取页面文件,批量输出所有标签标准代码和值以及标签数量。
[0036] 根据对页面代码的分析,如果想要提取出有意义的标签,并且忽略脚本语言(js)代码,那么在读取文件的过程中,就需要使用正则表达式进行匹配,满足特定正则表达式条件的再进行下一步处理。
[0037] 例如:$22
[0038] 一个正则表达式,也就是一串有特定意义的字符,必须首先要编译成为一个模式(Pattern)类实例,这个模式对象将会生成一个匹配(Matcher)实例,然后就可以通过使用变异的正则表达式为基础对目标字符串进行匹配工作了。其中,多个匹配实例可以共用一个模式对象。创建3个模式,含义分别为:第一个模式表示以左尖括号“<”或感叹号“!”开头,这个模式在后面的匹配中用于去掉以这两种符号开头的字符串;第二个模式表示以“
[0039] 读取到保存整个页面代码的文件后,进行读取代码并输出标签标准代码和值的部分。对文件按行读取,并保存;使用分割方法将读取到的行按照右尖括号“>”进行分割,并保存在数组中,这样对于每一行来说,将其按照标签进行分割,每一个标签内容都独立保存在数组中,就可以在下面的阶段方便地对每一个标签按照全局变量声明的模式进行匹配,保留有用的,去除无效的。
[0040] 在匹配阶段,对于每一个已经按照“>”分割截取出的标签内容首先使用第一个模式进行匹配,并将匹配到的部分存入数组,进而对是否是以脚本(script)开头的标签进行判断,如果不是脚本语言代码里的脚本标签,就是我们需要的标签,将整个标签内容按照空格分割,并取结果数组中的第一个字符串型数据,那么这个就是我们最终定位到的需要提取的标签的标准代码和值。接下来就可以遍历结果标签中的每一个字符,输出其和值。
[0041] 我们提取A和B网页的笔记本电脑价格信息作为训练目标,价格信息的位置由浏览器插件提取。将标准代码和值结果提取出来,以便在步骤5中作为输入数据整合到训练文件中。
[0042] 3.异构数据的归一化过程:
[0043] 由于每个页面的结构和书写方式不同,因此其页面代码的标签数量也不同,表现出了数据的异构性。由于在机器学习与数据挖掘方法中需要整齐的数据进行自适应的构建,因此我们将标签数量归一化。经过对淘宝、京东、1号店、新蛋等电商网站的统计,我们以其中500个典型采样页面的标签数最大值作为归一化目标n。如果某一页面的标签少于该归一化目标n,则进入步骤4补齐数据,以满足数据挖掘和机器学习方法的要求;如果标签数量多于该归一化目标,则舍弃多于该目标的标签而仅保留前面截取的n个标签。
[0044] 在本例中,经过对各大电商网站采样页面的观察,我们发现其标签数量趋向于1500,因此我们将1500作为归一化目标n。如果某网页的标签数量少于n,则使用步骤4模糊数据补充到归一化目标n,如果数量超过归一化目标,舍弃掉多余的。同理,在笔记本电脑价格这一训练目标上,其模式位置数组大小不超过11位,因此将位置数组的归一化目标定为
11。
[0045] 4.模糊数据补充:
[0046] 对于标签数量少于该归一化目标的页面,使用稀疏数据表示方法,即用问号“?”补齐到归一化目标n;当文件格式满足要求后,进入到步骤5。
[0047] 在本例中,对于标签数量少于归一化目标1500、位置数组少于11的部分使用问号“?”补齐数据。
[0048] 5.训练数据构建:
[0049] 数据挖掘和机器学习方法中唯一识别的文件由两部分组成,分别为文件头和数据。文件头包括关系声明(@relation)和属性声明(@attribute),属性声明包括属性名称和类型。数据部分由数据声明(@data)引导。数据部分中的每一行为一个实例,数据内容分别对应各个声明的属性。创建训练数据集时,声明关系,属性和数据,在这里,有n+1个属性,分别为经过归一化的n个标签的标准代码和值以及某一位的位置值。也就是说,根据已知的11位位置信息,我们需要创建11个训练集(同时对应于11个输入文件)分别进行训练,A和B网页内容均加入到同一个训练集中作为训练数据,每个训练集中有n个标签和一位位置信息,进行11次训练和测试,最终输出11位的位置值。
[0050] 在本例中,经过了数据归一化的训练数据构建,某一行训练数据即为:
[0051] 437,402,423,423,546,423,……,?,?,?,1
[0052] 表示A网页中的所有标签标准代码和值,数量不足n(本例为1500)的使用问号补充,最后的数字1即为A网页位置数组[1,2,6,2,2,1,2,1,2,1,1]中的第一位。
[0053] 又如在第3次训练,某一行的训练数据为:
[0054] 437,402,423,423,546,423,……,?,?,?,6
[0055] 同时,也要创建测试集的文件,文件中只有一个测试实例,同样有n+1个属性(这里为1501),其中最后一位未知、需要最终输出的位置用问号表示,对应于最终输出结果中的预测值。例如,在需要预测位置的C网页中,一共1501个属性值,该测试集为:
[0056] 437,402,423,423,423,423,……,?,?,?,?
[0057] 6.自适应训练:
[0058] 在我们的实验中,需要分类算法的一种通过对数据集的学习训练,来具备对未知数据进行分类和预测的能,从而能够进一步锻炼爬虫的自适应性。因此我们选择分类算法对数据进行适应性训练,以使爬虫程序实现自动化。
[0059] 具体训练过程如下:
[0060] 选择数据挖掘和机器学习方法中的探索模式,我们所有的实验都只需在这个模式下进行。在预处理标签下,打开文件,载入训练集。一般情况下,在面板中需要设置分类变量。这个实验中由于没有分类变量,我们就将最后一个位置目标变量作为分类属性,便于在训练和测试时作为因变量输出。进入分类训练阶段,选择分类算法,进行修改参数等操作,选定输出预测结果选项的栏位,进行自适应训练。生成训练模型后载入测试集,在此次训练模型上进行测试,最终可以在输出区域找到预测结果输出值,即为该次试验中对应的位置数组中的对应位。
[0061] 在本例中,载入以网页A和B为训练数据的训练集,将位置数据设为分类标签属性(Class label)作为训练目标,在分类训练时,选择IBk分类算法对该输入训练集进行训练,并在测试选项(TestOptions)中选中“作为训练集”选项,训练后保存模型。
[0062] 经过实践证明,该方法较为合适,准确率较高。
[0063] 7.学习方法验证:
[0064] 在训练结果的基础上(或载入已保存的模型),接着载入测试集文件,运行后在输出结果中提取测试集中未知目标数据对应的预测值;
[0065] 在本例中,在训练结束后自动保存了训练模型,因此直接在分类的测试选项标签页中选择“载入测试集”(Supplied test set)标签,设置测试集位置,并选中“输出预测”(Output Predictions)选项,运行测试集。可以在分类输出窗口(Classifier output)查看到输出的预测值。
[0066] 8.自适应模式生成:
[0067] 根据多次训练生成的位置数组,还原到整个页面中对应于该位置的部分代码,根据爬虫程序规则提取程序中需要补充的模式,代入到爬虫代码中,即可生成自适应爬虫程序。
[0068] 在这一模块中,在实验已经输出了欲求的位置数组,并已经在整个代码文件中定位到该行需要爬取的代码后,将该行代码转换为爬虫程序中最重要的模式格式,以便用在爬虫程序提取数据过程中。
[0069] 在爬虫程序中,爬取页面数据方法中的参数就是模式(pattern)。通过观察不同爬虫程序中模式的输出格式,我们了解到其主要使用到的就是提取部分代码的标签名称及标签值,来唯一定位其在整个代码文件中的位置便于爬虫程序知晓,以爬取相关内容。因此我们设计一个模式提取模块,根据已知页面代码,来自动化输出这个模式。
[0070] 将代码保存在数组中,并将读取的行按照左尖括号“<”来分割,并将分割后的字符串型保存在数组中,接下来取这个数组中的第1个位置的字符串进行操作,使用右尖括号“>”进行分割并保存。这一步的处理主要是为了提取出页面代码中的标签属性和属性值,去掉标签尾部及标签对之间的数值,因为对于模式来说只在乎标签的类型,即标签的名称和属性值。如:$22中,我们关注的是加粗(strong)标签,及其中的中标识(id)及其具体值,并不关心加粗的具体值22和标签的结尾。
[0071] 接下来处理标签及属性截取出来字符串中的空格问题,用于后期区分属性间和属性内值的问题。先将所有的空格都是用某一字符串代替,去掉空格之后将该字符串使用双引号进行分割并保存在数组中。
[0072] 现在所有的属性及属性值都已经区分开了,下面进行处理双引号内的空格问题:读取数组里保存的每一个值,根据顺序可知,奇数位为属性名称,偶数位为属性值,这样就可以区分出来,属性名可以直接输出,属性值内需要将空格还原。剩下拼装部分。通过观察爬虫代码中对于模式的处理,我们发现模式具有这样的特点:以符号“//”加标签名称开头,接以“[@”,其后是所有的属性名和属性值的组合,如id="jd-price",多个标签属性以“或”的方式组合即可,最终以符号“]”结尾。
[0073] 最后将所有处理结果拼装输出即可。
[0074] 运行结果分析:
[0075] (1)训练结果分析:在附图2的训练过程中选择K邻近(IBk)分类算法,载入训练集,设置运行结果中输出预测值。在分类输出结果中可见,在对训练集的预测中,第一列显示实例数量为14,第二列中的实际值均为训练集中的位置属性值,第三列为使用当前算法输出的预测值,第四列为错误数量,在本次训练中错误数为0。下面对整个训练过程的分析中,数据分别为:相关系数为1,平均绝对误差为0,均方根误差及标准误差为0;相关绝对误差为0;一共的实例数目为13;被忽略的未知分类实例数目为1,这是由于在训练过程中产生了误差。
[0076] (2)测试结果分析:附图3的测试是在上一训练得到的结果模型的基础之上进行的。载入测试集并运行后,在测试结果中显示的信息分别为:分类器规则参数、运行的关系名称(即基于哪种训练集)、实例数量14、属性数量1501、训练模式(这里为在上次训练的基础上进行测试);对分类器模型的解释,即经过一系列的训练学习,最终使用1邻近算法(IB1)进行分类;构建该模型是使用的时间为0秒,可以看出运行速度很快。下面的信息为最终的预测值。由于在测试集中只有一个实例,及需要输出的位置值,因此第一列表示第一个实例,实际值未知,预测值为6,错误下没有值,可理解为没有错误发生。因此在这一测试过程中可以得到最终的预测值为6。
[0077] 整个的训练和测试过程由此结束,最终得到了某一位位置值。
[0078] 通过反复的训练和测试,能够最终得到整个位置数组。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈