如何解析网页内容?

时间:2009-08-05 13:47:03

标签: webpage web-crawler

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

我尝试了各种方法:

  1. 许多网页都有RSS订阅源,因此我可以阅读Feed并获取此页面特定的内容。
  2. 许多网页使用“内容”元标记
  3. 在很多情况下,屏幕中间显示的对象是页面的主要“内容”
  4. 然而,这些方法并不总是有效,而且我注意到Facebook做了这么好的工作(当你想要附加链接时,他们会向你显示他们在链接页面上找到的内容)。

    那么 - 对于我看过的方法,你有什么提示吗?

    谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

嗯,你的问题仍然有点模糊。在大多数情况下,“爬虫”只是以文本格式在网络上查找数据,并将其处理以进行存储,解析等。“Facebook屏幕截图”完全不同于野兽。

如果您只是在寻找基于Web的抓取工具,可以使用几个库来轻松遍历网页的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'类来获取所有内容。你也可以给它一个默认的东西列表,比如class / id为“main”,“content”,“center”的div “等等。