我想知道如何(或多或少)可靠地剪辑随机网站上的内容(使用Ruby或JavaScript,并不重要)。
很像Evernote和Flipboard。
确定页面中实际内容的位置的最佳方法是什么?
目的:给定一个网址 - 检索该网页的实际内容并忽略所有布局和其他无关信息。
例如:
只需使用Evernote的“剪辑整页”选项即可查看我的意思。
感谢。
答案 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">
获取所有文字并将其作为文章内容(您可能需要以能够匹配postBody
和txtWrap
)的方式解析类。
另一个例子(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来获取用户名,信誉和徽章数等等。