本发明属于网页规则定制技术领域,特别是涉及基于pythonqt及智能算法的快速规则定制方法。
背景技术:
随着大数据技术的快速发展,数据作为其根本研究对象,发挥着越来越举足轻重的作用。数据如何高效快速地获取,成为了目前研究的重要课题之一。而爬虫作为互联网数据获取的基本技术手段,高效获取数据,优化改善势目前的技术势在必行。目前爬虫获取网页数据的基本思路是:
(1)通过给定的目标网页地址,爬虫发起对该页面的请求,即发送一个request,请求可以包含额外的hearder等信息。
(2)获取请求服务器后响应的内容。如果服务器能够正常响应,会得到一个response,response的内容便是所要获取页面的内容。
(3)解析内容。得到网页内容后,爬虫便会分析页面结构,爬取指定内容。
(4)保存数据。保存数据形式不一,可以存为文本,也可以保存到数据库,又或者保存为特定格式的文件。
对步骤(3)中的内容解析,目前常用的技术手段基本是,技术人员通过浏览器人工分析网站的页面结构,给出具体规则,然后后台爬虫根据规则对页面进行数据爬取。如果爬取单一的网站,这种方式是可取的;然而针对大量网站,这种逐一提取页面规则的方式显然是不可取的,耗时耗力。在效率上存在一定的瓶颈。归根揭底就是没有统一的工具来获取待爬取页面的元素规则。
本发明致力于研发一种基于pythonqt及智能算法的快速规则定制方法,用于解决现有的通过人工分析网站定制网页规则不适用多种繁杂的网站页面规则定制且耗时耗力、效率较低的问题。
技术实现要素:
本发明的目的在于提供基于pythonqt及智能算法的快速规则定制方法,通过selenium提取页面中导航列表项并过滤掉不符合的标签;同时通过智能算法提取详情页正文部分,实现了多种不同网站的网页规则的定制,解决了现有的通过人工分析网站定制网页规则不适用多种繁杂的网站页面规则定制且耗时耗力、效率较低的问题。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明为基于pythonqt及智能算法的快速规则定制方法,包括如下步骤:
s00:输入待爬取页面的url,客户端通过url加载页面;
s01:基于selenium提取页面中导航列表项;
s02:通过智能算法提取详情页正文部分;
s03:通过js技术从页面中获取页面元素规则,返回客户端;
s04:规则上传服务端,后台爬虫程序根据规则进行爬取;
其中,s01中提取页面中导航列表项具体过程如下:
a00:通过selenium标记页面中的可见<a>标签;
a01:对标记过的<a>标签进行过滤;
其中,s02中通过智能算法提取详情页正文部分具体过程如下:
c00:将详情页中的html标签去除得到纯文本;
c01:设定行块大小行数大小m、行块字数阈值并计算各行块的字符数n;
c02:绘制以行数m为横坐标、行块字数n为纵坐标绘制行块曲线;
co3:获取骤降点与骤升点并确认正文区域。
优选地,a01中过滤方式为:
t00:遍历a00中筛选出的<a>标签,计算出标签的坐标位置并存放于标签横坐标于标签坐标数组中;
t01:过滤掉纵坐标大于浏览器高度的<a>标签;
t02:预设表示页面导航列表个数的基准值;
t03:判断标签坐标数组中横坐标相同的个数是否小于基准值;若是,删除该横坐标对应的<a>标签。
优选地,s03中通过js技术从页面中获取页面元素规则具体过程如下:
poo:客户端开启一个web服务器;
po1:加载页面url时,在页面中新增form表单;给点击元素设置点击事件,通过点击元素获取该元素的各属性值,然后通过form表单提交到web服务器;
po2:web服务器接收form表单发送的数据并展示在客户端;客户端存储规则,同步到服务端。
优选地,所述行数大小m范围为1<m<正文行总数;所述行块字符数n为行块内字符总数。
优选地,所述骤降点判断依据为第一个满足当前点的下一点纵坐标为0;所述骤升点判断依据为第一个满足当前点的下一点纵坐标大于行块字数阈值;所述正文区域为骤升点与骤降点间的字符。
本发明具有以下有益效果:
本发明通过selenium提取页面中导航列表项并过滤掉纵坐标大于浏览器高度的<a>标签以及横坐标相同的个数小于基准值的<a>标签;之后再通过智能算法提取详情页正文部分,避免了通过人工分析网站定制网页规则不适用多种繁杂的网站页面规则定制的问题,适用于与不同网站网页规则定制,提高网页规则定制效率。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于pythonqt及智能算法的快速规则定制方法的流程图;
图2为本发明s02中通过智能算法提取详情页正文部分的流程图;
图3为本发明s03中通过js技术从页面中获取页面元素规则的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1所示,本发明为基于pythonqt及智能算法的快速规则定制方法,包括如下步骤:
s00:输入待爬取页面的url,客户端通过url加载页面;
s01:基于selenium提取页面中导航列表项;
s02:通过智能算法提取详情页正文部分;
s03:通过js技术从页面中获取页面元素规则,返回客户端;
s04:规则上传服务端,后台爬虫程序根据规则进行爬取;
其中,s01中提取页面中导航列表项具体过程如下:
a00:通过selenium标记页面中的可见<a>标签;
a01:对标记过的<a>标签进行过滤;
请参阅图2所示,s02中通过智能算法提取详情页正文部分具体过程如下:
c00:将详情页中的html标签去除得到纯文本;
c01:设定行块大小行数大小m、行块字数阈值并计算各行块的字符数n;
c02:绘制以行数m为横坐标、行块字数n为纵坐标绘制行块曲线;
co3:获取骤降点与骤升点并确认正文区域。
其中,a01中过滤方式为:
t00:遍历a00中筛选出的<a>标签,计算出标签的坐标位置并存放于标签横坐标于标签坐标数组中;
t01:过滤掉纵坐标大于浏览器高度的<a>标签;
t02:预设表示页面导航列表个数的基准值;
t03:判断标签坐标数组中横坐标相同的个数是否小于基准值;若是,删除该横坐标对应的<a>标签。
请参阅图3所示,s03中通过js技术从页面中获取页面元素规则具体过程如下:
poo:客户端开启一个web服务器;
po1:加载页面url时,在页面中新增form表单;给点击元素设置点击事件,通过点击元素获取该元素的各属性值,然后通过form表单提交到web服务器;
po2:web服务器接收form表单发送的数据并展示在客户端;客户端存储规则,同步到服务端。
其中,行数大小m范围为1<m<正文行总数;行块字符数n为行块内字符总数。
其中,骤降点判断依据为第一个满足当前点的下一点纵坐标为0;骤升点判断依据为第一个满足当前点的下一点纵坐标大于行块字数阈值;正文区域为骤升点与骤降点间的字符。
值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。