我正在编写一个特殊的类似爬虫的应用程序,需要检索各个页面的主要内容。只是为了澄清:我需要页面的真正“肉”(如果有一个,自然)
我尝试了各种方法:
- 许多页面都有 rss 提要,因此我可以阅读提要并获取此页面的特定内容。
- 许多页面使用“内容”元标记
- 在很多情况下,呈现在屏幕中间的对象是页面的主要“内容”
然而,这些方法并不总是有效,我注意到 Facebook 在这方面做得非常好(当你想附加一个链接时,他们会向你展示他们在链接页面上找到的内容)。
所以 - 你对我看过的方法有什么建议吗?
谢谢!
我正在编写一个特殊的类似爬虫的应用程序,需要检索各个页面的主要内容。只是为了澄清:我需要页面的真正“肉”(如果有一个,自然)
我尝试了各种方法:
然而,这些方法并不总是有效,我注意到 Facebook 在这方面做得非常好(当你想附加一个链接时,他们会向你展示他们在链接页面上找到的内容)。
所以 - 你对我看过的方法有什么建议吗?
谢谢!
网页确实没有标准的方式来标记“这是肉”。大多数页面甚至不想要这个,因为它使窃取他们的核心业务更容易。所以你真的必须编写一个框架,它可以使用每页规则来定位你想要的内容。
好吧,你的问题还是有点模糊。在大多数情况下,“爬虫”只会在网络上以文本格式查找数据,并对其进行处理以进行存储、解析等。“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 .