1

我正在尝试制作一个需要从多个网站抓取大量数据的应用程序。我尝试使用 Ruby 抓取网站,但像 Mechanize 这样的 gem 似乎只抓取静态页面而不是动态内容。我有几个关于我应该在这个项目中使用哪种语言或任何其他语言的问题(我正在考虑使用 Node,因为应用程序中的很多元素必须是实时的)。

  1. 是否可以使用 Ruby 和/或 Node 来抓取动态内容?如果是这样,具体应该使用哪些工具?
  2. 如果多个用户要从多个站点进行抓取,您建议使用哪种语言?
  3. 在一个稍微无关的注释中,是否可以将 Node 和 Rails 结合起来?

提前致谢!

4

2 回答 2

6

您可以利用capybaragem 使用 ruby​​ 抓取 javascript 网站。

selenium这样做的好处是可以通过驱动程序使用实际的浏览器,例如 Firefox、Chrome 和 IE 。或者您可以使用无头浏览器,例如 webkit(通过 capybara-webkit)或 phantomjs(通过 poltergeist)。

当您使用 capybara 时,请务必使用启用 javascript 的驱动程序,例如 selenium 或 capybara-webkit。我今天的司机是恶作剧。

在他们的自述文件中有一些关于如何在远程站点上使用 capybara 的说明。

Node vs. Ruby 是一个非常开放的问题。我在这里的回答是建议使用 Ruby,因为这是我的经验和偏好。“组合”它们可能意味着很多事情,它们可以协同使用,发挥各自的优势。

于 2013-01-24T23:42:06.870 回答
0

当您说 mechanize 无法抓取动态内容时,您的真正意思是要确定需要发出哪些 ajax 请求并制作它们需要更多的工作。另一方面,一旦你这样做了,你通常会得到一个很好的 json 响应,而且很容易处理。Mechanize 也比完整的浏览器解决方案快得多,所以我认为它通常值得额外的工作。

就 Node 而言,它是有潜力的,也许一旦它出现了一段时间,就会有一些很棒的库可用,但我还没有看到任何可以弥补我所怀念的 ruby​​ 东西的东西。

于 2013-01-25T02:27:56.193 回答