【问题标题】:Ruby, Scrape page written entirely in JavaScriptRuby,完全用 JavaScript 编写的 Scrape 页面
【发布时间】:2011-07-07 04:11:24
【问题描述】:

我正在玩 Ruby + Hpricot 并构建一个简单的刮板。我可以毫无问题地与其他网站合作。但是如果一个页面完全是用 JavaScript 编写的,那它可以被刮掉吗? 但是,谷歌搜索结果页面现在似乎完全基于 JavaScript,除了一些内部链接。

  • 这样写的页面能不能被 Mechanize 和 Hpricot 等常规工具抓取(我猜他们不能)

  • 是否有可能尝试渲染页面(如浏览器)然后收集数据的工具/宝石?

谢谢!

编辑:感谢您的回复。我意识到直接爬谷歌是不对的,有一个 API 可以使用。我真正想知道的问题的核心是,是否有一个完全用 javascript 编写的页面(包括文本和内容 - 可能会被混淆。)是否有一个 gem 会尝试仅以文本和然后获取它的文本内容?

【问题讨论】:

  • 你为什么要尝试抓取 Google,而不是使用他们的 API? (提示:Google 搜索结果在没有 JS 的情况下也能正常工作。至少如果您使用的是基于文本的网络浏览器。)
  • Google 可能不喜欢你抓取他们的网页。您应该使用他们的 API(并查看他们那里有哪些服务条款)
  • @Chris :谢谢,我正在与 lynx 核对他们用于常规文本结果页面的 URL。 @Thilo:我明白,我只是在学习,所以我可能只会处理几页。不要以为他们会(介意|关心)。
  • 我有一个应用程序,它每晚在我的笔记本电脑上运行,它使用它们的 API 搜索 Google 和 Yahoo。当您可以以正确的方式获得完全干净的结果时,不要费心刮擦。

标签: ruby screen-scraping hpricot


【解决方案1】:

这非常非常重要,所以请仔细听:

总是首先检查'robots.txt',如果它告诉你不要刮,不要刮!

如果你看http://www.google.com/robots.txt,你会清楚地看到这一行:

Disallow: /search

编辑(基于提问者的 cmets)

暂时搁置“robots.txt”问题,无论如何,使用更简单的网站学习可能会更好。我建议使用一两个不经常更改的网站,这样您就可以轻松地重现结果并验证一切是否如您所愿。

【讨论】:

    【解决方案2】:

    这是一个关闭即时加载的链接。
    http://www.google.com/webhp?hl=en&tab=ww&complete=0

    • 是否有可能尝试呈现页面(如浏览器)然后收集数据的工具/宝石?

    如果需要,您可以使用 PhantomJS (C++) 或 PyPhantomJS (Python) 进行屏幕抓取。

    PyPhantomJS 还有一个非常好的插件系统,而 C++ 没有。

    还有一个刚刚发布的抓取库。
    Google Groups post | GitHub address

    注意:正如其他人所说,Google 不希望人们抓取他们的搜索结果。我建议遵守他们的服务条款。

    【讨论】:

      【解决方案3】:

      你应该看看Google's TOS。不允许抓取他们的搜索结果。使用他们的搜索 API。

      【讨论】:

        【解决方案4】:

        如果您抓取 Google,则绝对必须使用代理,至少 100 多个。否则他们会很容易地禁止你的 IP 地址。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-22
          • 2011-03-07
          相关资源
          最近更新 更多