【问题标题】:How to scrape ajax generated content from JSF-Site?如何从 JSF-Site 抓取 ajax 生成的内容?
【发布时间】:2012-01-31 00:40:02
【问题描述】:

我目前正在使用不同的抓取技术并发现,当涉及大量 javascript 时,它会很快变得非常复杂。 我在 HTMLUnit 上取得了一些成功,它似乎可以很好地解释 javascript,但我正在寻找一个更轻量级的解决方案。

所以我现在面临的问题是:我想检索特定页面的结果,该页面是通过单击某个按钮通过 ajax 调用生成的。 调用本身相当简单,只是一个到某个 URL 的 HTTP Post,并在 post 正文中提交了一些参数。我现在遇到的问题是,当我将 HTTP Post 提交给 ajax 函数而没有真正打开包含站点时,服务器会抱怨。

我基本上做的测试是:

  curl -v -d "AJAXREQUEST=..." https://myhost/ajaxurl

我得到的是:

  <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta name="Ajax-Response" content="true" />
      <meta name="Ajax-Expired" content="View state could't be restored - reload page ?" />
    </head>
  </html>

服务器正在运行 JSF 1.2。我该怎么做才能从 AJAX 调用中获得结果?我不是真正的 JSF 专家...

【问题讨论】:

    标签: ajax http jsf web-scraping


    【解决方案1】:

    如果我不得不猜测,JSF 没有与通过 curl 发送的请求关联的会话,因此与页面关联的对象不存在。对于 curl 查看http://curl.haxx.se/docs/httpscripting.html 第 10 节,cookie。您必须拉出页面,获取 cookie,然后使用 cookie 进行 http 发布(开始使用 curl 进行大量工作)。

    不过,我建议您查看 Selenium,它有一个可以生成 Java 以与 JavaScript 交互的 IDE。

    【讨论】:

    • 据我了解,您需要一个浏览器才能使用 Selenium,对吧?我想要一些更轻量级的东西(例如 / 可以完全用 java 或 javascript 实现),而不需要额外的软件 / 进程。
    • 使用 curl 的方法是:'curl -c cookies myajaxurl' 后跟 'curl -b cookies -d "AJAXREQUEST=..." myajaxurl'
    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多