本申请涉及一种数据爬取方法及装置。
背景技术:
网络爬虫(又称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取网络中信息的程序或者脚本。
现在有很多网站为了防止自身的响应速度减慢以及资源占用的问题,会杜绝一些爬虫获取信息。可以直接通过请求屏蔽的方式来达到该种目的,但是有时候由于并不希望完全屏蔽,只是希望部分关键信息不被爬取,此时可以采用关键信息图片化的方式,但是图片化的方式相对较为容易通过ocr的方式进行破解,于是出现了一些通过加密的方式来避免重要数据被爬取的方法,此种方法的出现大大的降低了数据爬取的工作效率以及准确率。
技术实现要素:
为了解决上述问题,本申请一方面提供了一种数据爬取方法,包括如下步骤:爬取数据;从爬取到的数据中找到并定位错误数据的位置以及定位错误数据对应的代码位置并找到加密代码;从加密代码得到密钥并结合错误数据对应的代码进行数据修正,得到经修正之后的正确数据。本申请通过对数据对应出处的代码进行分析得到其原始数据,并通过对错误数据的来源进行代码分析得到密钥,继而得出正确数据。需要说明的是,本申请包含两种技术方案,一种是从最终数据中发现错误,然后反向追寻找到犯错的位置;另外一种是从原始代码中确定一些可能存在错误的位置,在获取数据过程中即进行修正,最终得到的数据即为正确的数据。
优选的,所述加密代码为前端代码。前端代码是指的处在内容代码之前的代码,一般是为了标识、索引等功能,在反爬虫过程中,前端代码经常被用来进行加密操作。
优选的,定位错误数据的方法按照如下方式进行:爬取数据过程中定位数据的前端代码,对于具有前端代码的数据进行定位。
优选的,具有前端代码的数据为错误数据。本申请通过对于前端代码的筛选来筛选被加密处理过的数据,继而在带有数据的代码的处理过程中就进行反向破译,从而得到正确数据。
优选的,所述密钥为爬取到的数据的正确排列方式。
优选的,所述数据修正按照如下方式进行:将错误数据进行切片,然后利用密钥对于切片进行重新排序得到正确数据。
优选的,所述正确数据利用错误数据的前端代码确定的位置放入到指定位置。
优选的,所述前端代码为标签内class值的数字。
优选的,所述加密方法为多种js类型的混淆加密方式。
另一方面,本申请提供了一种数据爬取装置,包括如下模块:
数据获取模块,爬取数据;
定位模块,从爬取到的数据中找到并定位错误数据的位置以及定位错误数据对应的代码位置并找到加密代码;
修正模块,从加密代码得到密钥并结合错误数据对应的代码进行数据修正,得到经修正之后的正确数据。
本申请能够带来如下有益效果:本申请通过对数据对应出处的代码进行分析得到其原始数据,并通过对错误数据的来源进行代码分析得到密钥,继而得出正确数据。需要说明的是,本申请包含两种技术方案,一种是从最终数据中发现错误,然后反向追寻找到犯错的位置;另外一种是从原始代码中确定一些可能存在错误的位置,在获取数据过程中即进行修正,最终得到的数据即为正确的数据。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为一种实施方式的示意图;
图2为密钥图;
图3为无序分散的数据图;
图4为有序正确组合的数据图;
图5为另一种实施方式的示意图;
图6为第二个实施例的具体破解过程。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本申请进行详细阐述。
在第一个实施例中,如图1所示,按照下列方式进行:
s101.爬取数据;
s201.从爬取的数据中确认哪些是错误数据;
s301.从错误数据定位到错误代码,并从错误代码的前端代码找到加密代码;
s401.获取密钥并且根据错误数据的情况进行修正得到最终的正确的数据。
如图1所示,所引用的网页为https://car.autohome.com.cn/config/series/146.html,从图1可以看出,其直接识别的识别结果为:a82019款plusa8l50tfsquattro舒适性,即少了“奥迪”;研究其前端代码得到spanclass=“hs_kw49_configfe”,然后破译hs_kw49_configfe即为“奥迪”,定位在a8之前,得到“奥迪a82019款plusa8l50tfsquattro”。
具体的破译过程如下:爬取数据,使用正则匹配从爬取数据中抽取所需数据并过滤掉无关数据后得到<spanclass='hs_kw49_configln'></span>a82019款plusa8l50tfsiquattro,再使用正则匹配<span\\s*class=[\'\"]hs_kw(\\d )_([^\'\"] )[\'\"]></span>提取出前端代码<spanclass='hs_kw49_configln'></span>,使用正则提取数字得到49,得到a8前面加密的词的序号为49。
再根据加密部分的代码规律使用正则匹配从爬取数据中抽取相关的前端代码,过滤无关代码,保留加密代码,使用反向解密方法解密得到密钥(如图2)和无序分散的数据(如图3),利用密钥对无序数据进行修正,得到有序正确组合的数据(如图4)。
序号从0开始,有序正确数据中第49个正好是奥迪。把奥迪替换进去,得到修正后的数据:奥迪a82019款plusa8l50tfsiquattro。
在第二个实施例中,如图5所示,按照如下方式进行:
s201.爬取数据;
s202.爬取数据中发现前端代码,默认其对于后面的内容代码有影响;
s203.破解得到密钥,破解得到相应的数据;
s204.将s203得到的数据与后面的内容代码提取到的数据进行结合,得到正确数据。
如图6所示,所引用的网页为https://car.autohome.com.cn/config/series/146.html,当检测有前端代码,<spanclass='hs_kw49_configln'></span>,提取出前端代码<spanclass='hs_kw49_configln'></span>,使用正则提取数字得到49,得到a8前面加密的词的序号为49。
再根据加密部分的代码规律使用正则匹配从爬取数据中抽取相关的前端代码,过滤无关代码,保留加密代码,使用反向解密方法解密得到密钥(如图2)和无序分散的数据(如图3),利用密钥对无序数据进行修正,得到有序正确组合的数据(如图4)。
序号从0开始,有序正确数据中第49个正好是奥迪。把奥迪替换进去,得到修正后的数据:奥迪a82019款plusa8l50tfsiquattro。
在第三个实施例中,一种数据爬取装置,包括如下模块:数据获取模块,爬取数据;定位模块,从爬取到的数据中找到并定位错误数据的位置以及定位错误数据对应的代码位置并找到加密代码;修正模块,从加密代码得到密钥并结合错误数据对应的代码进行数据修正,得到经修正之后的正确数据。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
1.一种数据爬取方法,其特征在于:包括如下步骤:
爬取数据;
从爬取到的数据中找到并定位错误数据的位置以及定位错误数据对应的代码位置并找到加密代码;
从加密代码得到密钥并结合错误数据对应的代码进行数据修正,得到经修正之后的正确数据。
2.根据权利要求1所述的一种数据爬取方法,其特征在于:所述加密代码为前端代码。
3.根据权利要求1所述的一种数据爬取方法,其特征在于:定位错误数据的方法按照如下方式进行:爬取数据过程中定位数据的前端代码,对于具有前端代码的数据进行定位。
4.根据权利要求3所述的一种数据爬取方法,其特征在于:具有前端代码的数据为错误数据。
5.根据权利要求1所述的一种数据爬取方法,其特征在于:所述密钥为爬取到数据的正确排列方式。
6.根据权利要求5所述的一种数据爬取方法,其特征在于:所述数据修正按照如下方式进行:将错误数据进行切片,然后利用密钥对于切片进行重新排序得到正确数据。
7.根据权利要求6所述的一种数据爬取方法,其特征在于:所述正确数据利用错误数据的前端代码确定的位置放入到指定位置。
8.根据权利要求7所述的一种数据爬取方法,其特征在于:所述前端代码为标签内class值的数字。
9.根据权利要求5所述的一种数据爬取方法,其特征在于:所述加密方法为多种js类型的混淆加密方式。
10.一种数据爬取装置,其特征在于:包括如下模块:
数据获取模块,爬取数据;
定位模块,从爬取到的数据中找到并定位错误数据的位置以及定位错误数据对应的代码位置并找到加密代码;
修正模块,从加密代码得到密钥并结合错误数据对应的代码进行数据修正,得到经修正之后的正确数据。
技术总结