【问题标题】:Fetching complete HTML page (including AJAX responses) in Ruby在 Ruby 中获取完整的 HTML 页面(包括 AJAX 响应)
【发布时间】:2017-01-28 10:17:38
【问题描述】:

我正在尝试爬取电子商务目录,其中产品数据是使用 Ajax 响应加载的。

因此,使用 get 请求响应的内容不完整(部分数据)。

我使用 Ruby 的默认 HTTP 库进行获取和 Nokogiri 进行解析。

有什么方法可以发起请求并在延迟后记录响应?

【问题讨论】:

    标签: html ruby-on-rails ruby ajax delay


    【解决方案1】:

    你需要一个库/方法/方式,它有一个 javascript 引擎来执行 javascript,因为使用了 ajax(如果你想让它自动完成)。

    您可以为此使用无头浏览器,例如 phantomjs:

    PhantomJS Project Homepage

    PhantomJS for Ruby

    Wiki Article

    它基本上是一个没有前端的普通浏览器。 PhantomJS 使用 Webkit 引擎(例如 Safari 使用的)。 所以它能够执行JS,因此也能够执行AJAX。

    【讨论】:

    • 这并不完全正确。如果您事先了解足够多,通常可以在不涉及 javascript 的情况下执行请求。
    • @Felix:我同意(编辑了答案)。但是自定义构建所有的 AJAX 请求可能需要大量的工作(并且令人头疼),最终拥有与通常使用 web 浏览器相同的 DOM。而且,正如您所提到的,您需要事先了解足够多的信息。虽然只对一个特定的“页面”执行此操作是可以的,但对于一个站点的不同站点/页面执行此操作可能需要很长时间。
    • 完全同意。
    猜你喜欢
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    相关资源
    最近更新 更多