剪辑网页内容*的可靠方法是什么?

时间:2011-09-12 00:30:01

标签: javascript html ruby web

我想知道如何(或多或少)可靠地剪辑随机网站上的内容(使用Ruby或JavaScript,并不重要)。

很像Evernote和Flipboard。

确定页面中实际内容的位置的最佳方法是什么?

目的:给定一个网址 - 检索该网页的实际内容并忽略所有布局和其他无关信息

例如:

只需使用Evernote的“剪辑整页”选项即可查看我的意思。

感谢。

1 个答案:

答案 0 :(得分:2)

我最初的想法是DOM解析页面,然后遍历DOM树到特定div的内容并显示(通过XPath等)。对于没有明确定义的部分的页面,无论使用哪种方法,都会很困难。 Firefox和Chrome的AutoPager插件实现了XPath解析行为。获取最新版本并打开.xpi以了解他是如何做到的。这是一个JavaScript实现。

通过让某人按照网址/网站计划输入内容id的{​​{1}}或class内容来选择div。对于你的9msn例子,包含文章标题,分享按钮,作者图像和帖子内容的div是

div

并且文本的实际正文是

<div class="post">

因此有人会输入您需要解析<div class="postBody txtWrap" section="txt"> h1的第一个<div class="post">,这是文章标题,然后从<div class="postBody">获取所有文字并将其作为文章内容(您可能需要以能够匹配postBodytxtWrap)的方式解析类。

另一个例子(for funsies):Stack Overflow。问题的标题包含在

<div id="question-header">

问题的文字比较棘手,因为它位于div中,与答案的文字具有相同的class,而且没有id。您需要匹配<div id="question">,然后遍历到

<div class="post-text">

同样,对于答案,每个<div id="answer-[UINTEGER]">都包含<div class="post-text">及其各自的文字。

在这两种情况下,您都可以遍历question的顶级answer-<div class="user-details"> div来获取用户名,信誉和徽章数等等。