我目前正在玩不同的抓取技术并发现,当涉及到大量的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专家......
答案 0 :(得分:0)
如果我不得不猜测,JSF没有与使用curl发送的请求相关联的会话,因此与该页面关联的对象不存在。有关卷曲,请查看http://curl.haxx.se/docs/httpscripting.html第10部分,Cookie。您必须拉页面,获取cookie然后使用cookie执行http发布(开始使用curl进行大量工作)。
但是,我建议查看Selenium,它有一个生成Java以与JavaScript交互的IDE。