爬虫实战12—自动摘要及正文抽取

来源:互联网 发布:mac 彻底删除office 编辑:程序博客网 时间:2024/05/22 08:24

文章说明:本文是在学习一个网络爬虫课程时所做笔记,文章如有不对的地方,欢迎指出,积极讨论。

一、文本长度分析

(一)去除JavaScript及CSS

利用lxml的clean类,能删除HTML里所包含的CSS及script

from lxml.htmlimport clean

cleaner =clean.Cleaner(style=True,scripts=True,comments=True,javascript=True,

      page_structure=False,safe_attrs_only=False)

content =cleaner.clean_html(content.decode(‘utf-8’)).encode(‘utf-8’)

(二)去除所有的HTML TAG

利用下面的正则表达式,把HTML的TAG和属性也都去除掉,最后只剩下正文部分

reg = re.compile(“<[^>]*>”)

content =reg.sub(“”,content)

示例:


输出结果:微指数

(三)基于文本长度的分析方法

对于一些新闻类网页,正文分布往往比较集中,在正文集中的区域,每一行的文本数量都比较多。

二、Text-Tag Ratio

(一)文本与标签密度

对一些网页进行分析发现,正文的标签比较少文本数量与标签数量的比值很大,而噪声部分标签很多正文很少,所以我们考虑利用文本与标签的比值来进一步区分,利用下面算法计算TEXT/TAG的比值


使用TEXT/TAG的比值后,有效去除了一些噪声

三、K-Means

(一)监督学习与无监督学习(参考内容)

监督学习(SupervoisedLearning):有标签,根据标签来预测结果并与实际结果对比,修正数据最终得到一个模型。

无监督学习(UnsupervisedLearning):没有标签,根据一些特性来自动分类。

(二)K-Means

1.随机选择k个中心点;

2.计算每个点与k个中心点的距离,把这个点划归到距离最小的点那个类别里;

欧拉距离:

3.重新计算每个类别的中心点;


4.重复步骤2~3,直到目标函数达到最优或者迭代次数达到上限;

5.结束条件,综合距离方差最小 ,可以转化为求两次方差之间的差值小于设定的阈值。


(三)算法的优点

1.快速、简单

2.大数据集有较高的效率并且是可伸缩性

3.时间复杂度近似于线性,而且适合挖掘大规模数据集。K-Means聚类算法的时间复杂度是O(nkt),其中n代表数据集中对象的数量,t代表着算法迭代的次数,k代表着簇的数目

4.每个簇接近高斯分布的时候,效果比较好

(四)算法的缺点

1.簇的平均值可被定义的情况下,才能使用

2.必须给定k的数目,而且对k很敏感

3.对噪声和孤立点很敏感

(五)对数据进行平滑

考虑这种情况:一段游记,有大量几个字一句话的描述,有一部分长段的介绍,因此会出现下面的情况,如果我们按照平均值来计算的话,大多数正文都会被认为是噪声。

正文整体是成块出现的,因此可以对奇点、噪点进行平滑,平哈的办法就是对前后r行进行平均,这样能提高K-Means算法的精度


(六)利用K-Means聚类


(七)中心点均值

分布更平均的时候,标准差减小;分布不均匀的时候,标准差增加。正文簇的均值一定高于标准差的。


四、标签模板

(一)通用模板与配置


针对特定类型的网站,可以快速找出它们所使用的标签类型,我们把这些选择器以模板的方式来配置。

xpath支持or的选项,因此我们可以用

self::p orself::span

来合并多种标签标记的正文

(二)使用场景

Text/Tag:

1.大规模抓取,没有模板的网站

2.优势:不需要规则,使用广泛

3.劣势:精准度差

模板:

1.有针对性的抓取,对于核心网站可以考虑使用模板

2.优势:精准度高,质量好,速度快

3.劣势:只能对特定网站使用

五、PyGoose

(一)概述

Goose will tryto extract the following information:

1. Main text ofan article

2. Main image ofarticle

3. AnyYouTube/Vimeo movies embedded in article

4. MetaDescription

5. Meta tags

(二)setup

git clonehttps://github.com/grangier/python-goose.git

cd python-goosepip install –r requirements.txt

python setup.pyinstall

(三)使用


原创粉丝点击