如何从JSF-Site抓取ajax生成的内容?

时间:2012-01-31 00:40:02

标签: ajax http jsf web-scraping

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

所以我现在面临的问题是:我想要检索特定页面的结果,该页面是通过单击某个按钮通过ajax调用生成的。 调用本身相当简单,只是一个HTTP发布到某个URL,并在帖子正文中提交了一些参数。我现在遇到的问题是服务器在我没有真正打开包含站点的情况下将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专家......

1 个答案:

答案 0 :(得分:0)

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

但是,我建议查看Selenium,它有一个生成Java以与JavaScript交互的IDE。