【问题标题】:How do I resolve the content of a webpage?如何解析网页的内容?
【发布时间】:2009-08-05 13:47:03
【问题描述】:

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

我尝试了各种方法:

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

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

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

谢谢!

【问题讨论】:

  • 你为什么认为有任何“主要内容”?

标签: webpage web-crawler


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    嗯,你的问题还是有点含糊。在大多数情况下,“爬虫”只会在网络上以文本格式查找数据,并对其进行处理以进行存储、解析等。“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 的 cmets 部分、来自 StackOverflow 的问题、Digg 链接等),您可以硬编码它们的格式,以便您的爬虫可以说,“好的,我在 Reddit 上,使用“事物”类获取所有内容。您还可以为其提供要查找的默认事物列表,例如类/ID 为“main”、“content”、“center”的 div "等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2013-04-23
      • 2017-08-01
      • 2013-09-15
      • 2017-03-24
      • 1970-01-01
      • 2010-12-23
      相关资源
      最近更新 更多