蟒蛇的方法,以提取的含量(不包括导航)从HTML网页
-
18-09-2019 - |
题
当然HTML网页可以分析使用任何数量的蟒蛇的分析程序,但是我很惊讶,那里似乎没有任何公共分析的脚本中提取有意义的内容(不包括边栏、导航、等等)。 从一定HTML文档。
我猜这是什么喜欢收集DIV和P元素,然后检查他们的最低金额的文字内容,但我敢肯定,一个固执行情况将包括大量的事情,我没有想到的。
解决方案
尝试美丽的汤库用于Python。它具有非常简单的方法来提取从HTML文件的信息。
试图从一般的网页中提取数据需要人写自己的网页以类似的方式......但有办法传达一个页面看起来相同更不用说所有conbinations几乎是无限的,你可以传达相同的信息。
有没有一种特定类型的你试图提取信息或其他一些最终目标?
您可以尝试提取“格”和“P”标志的任何内容,并比较在页面中的所有信息的相对大小。那么问题是,人们大概组信息到集合“div的和” P(或至少他们做,如果他们正在写良好的HTML!)。
也许如果你形成的信息是如何与一棵树(节点将是“P”或“格或任何与每个节点将包含相关的文本),你可以做一些分析,以确定最小的” P '或‘那encompases这似乎是大多数人的信息的div’..?
[编辑] 也许如果你能得到它到树结构中我建议,然后你可以使用类似的计分制度,垃圾邮件刺客。定义一些规则,尝试对信息进行分类。一些例子:
+1 points for every 100 words
+1 points for every child element that has > 100 words
-1 points if the section name contains the word 'nav'
-2 points if the section name contains the word 'advert'
如果你有大量的这加起来当你找到更相关的看着段低的计分规则,我认为这可能演变成一个相当强大的和强大的技术。
[EDIT2] 纵观可读性,它似乎是在做几乎正是我刚才的提议!也许它可以改进,以便更好地尝试和理解表?
其他提示
看一看TemplateMaker中: http://www.holovaty.com/writing/templatemaker/
它是由Django的的创始人之一写入。基本上你给它的几个例子的HTML文件,它就会生成一个“模板”,然后可以用它来提取只是不同(这通常是有意义的内容)的位。
下面是来自谷歌代码页的示例:
# Import the Template class.
>>> from templatemaker import Template
# Create a Template instance.
>>> t = Template()
# Learn a Sample String.
>>> t.learn('<b>this and that</b>')
# Output the template so far, using the "!" character to mark holes.
# We've only learned a single string, so the template has no holes.
>>> t.as_text('!')
'<b>this and that</b>'
# Learn another string. The True return value means the template gained
# at least one hole.
>>> t.learn('<b>alex and sue</b>')
True
# Sure enough, the template now has some holes.
>>> t.as_text('!')
'<b>! and !</b>'
什么是有意义的,什么不是,它依赖于语义页面。如果语义是蹩脚的,你的代码不会“猜测”什么是有意义的。我用的可读性,您的评论链接,和我看到的许多页面上我试着去阅读它没有提供任何的结果,不是在谈论一个体面的一个。
如果有人把一个表中的内容,你就死定了。尝试在一个phpBB论坛可读性,你会明白我的意思。
如果你想这样做,去与<p></p>
一个正则表达式,或解析DOM。
鹅 只是图书馆为这项任务。引用他们自述:
鹅将尝试提取的以下信息:
- 主要文本的一篇文章
- 主图像的文章
- 任何Youtube/Vimeo电影嵌入的文章
- 元的描述
- 元标记