2

我正在编写一个特殊的类似爬虫的应用程序,需要检索各个页面的主要内容。只是为了澄清:我需要页面的真正“肉”(如果有一个,自然)

我尝试了各种方法:

  1. 许多页面都有 rss 提要,因此我可以阅读提要并获取此页面的特定内容。
  2. 许多页面使用“内容”元标记
  3. 在很多情况下,呈现在屏幕中间的对象是页面的主要“内容”

然而,这些方法并不总是有效,我注意到 Facebook 在这方面做得非常好(当你想附加一个链接时,他们会向你展示他们在链接页面上找到的内容)。

所以 - 你对我看过的方法有什么建议吗?

谢谢!

4

2 回答 2

1

网页确实没有标准的方式来标记“这是肉”。大多数页面甚至不想要这个,因为它使窃取他们的核心业务更容易。所以你真的必须编写一个框架,它可以使用每页规则来定位你想要的内容。

于 2009-08-05T14:09:46.283 回答
0

好吧,你的问题还是有点模糊。在大多数情况下,“爬虫”只会在网络上以文本格式查找数据,并对其进行处理以进行存储、解析等。“Facebook 截图”则完全不同。

如果你只是在寻找一个基于网络的爬虫,有几个库可以用来很容易地遍历网页的 DOM,并且可以抓取你正在寻找的内容。

如果你使用 Python,试试Beautiful Soup 如果你使用 Ruby,试试hpricot

如果您想在以后处理网页的全部内容,只需获取并存储“html”标签下的所有内容。

这是一个 BeautifulSoup 示例,用于获取页面上的所有链接:

require 'hpricot'
require 'open-uri'
doc = Hpricot(open("http://www.stackoverflow.com"))
(doc/"a").each do |link|
  puts link.attributes['href']
end

编辑:如果您主要从同一站点获取内容(例如 Reddit 的评论部分、来自 StackOverflow 的问题、Digg 链接等),您可以对它们的格式进行硬编码,以便您的爬虫可以说:“好的,我'我在 Reddit 上,用 'thing' 类获取所有内容。你也可以给它一个默认的东西列表,例如类/id 为“main”、“content”、“center”等的 div .

于 2009-08-05T13:59:10.680 回答