我在 python 中使用 curl、php 和 httplib2 来获取 URL。
但是,有些页面在加载页面后使用 JavaScript (AJAX) 检索数据,然后它们只是覆盖页面的特定部分。
那么,是否有任何可以处理 JavaScript 的命令行实用程序?
要知道我的意思,请访问:monster.com 并尝试寻找工作。
您将看到 Ajax 正在获取作业列表。所以,如果我想根据我的关键字搜索来获取工作,我会得到没有工作的页面。
但是通过浏览器它可以工作。
我在 python 中使用 curl、php 和 httplib2 来获取 URL。
但是,有些页面在加载页面后使用 JavaScript (AJAX) 检索数据,然后它们只是覆盖页面的特定部分。
那么,是否有任何可以处理 JavaScript 的命令行实用程序?
要知道我的意思,请访问:monster.com 并尝试寻找工作。
您将看到 Ajax 正在获取作业列表。所以,如果我想根据我的关键字搜索来获取工作,我会得到没有工作的页面。
但是通过浏览器它可以工作。
获取 FireBug并查看该 Ajax 请求的 URL。然后,您可以将 curl 与该 URL 一起使用。
有两种方法可以处理这个问题。使用基于浏览器的完整客户端(如Webkit )编写屏幕抓取工具,或转到实际页面并找出 AJAX 请求正在做什么,然后直接请求。然后,您当然需要解析结果。使用萤火虫来帮助你。
查看这篇文章以获取有关该主题的更多信息。赞成的答案建议使用测试工具来驱动真正的浏览器。 什么是支持 Javascript 的屏幕抓取的好工具?
我认为env.js可以处理<script>
元素。它在Rhino JavaScript 解释器中运行并且有它自己的 XMLHttpRequest 对象,所以如果它不自动运行脚本,你至少应该能够手动运行脚本(选择所有<script>
标签,获取 .js 文件,然后调用)。eval
不过要小心运行您不信任的脚本,因为它们可以使用任何 Java 类。
自从 John Resig 的第一个版本之后我就没有玩过它,所以我不太了解如何使用它,但是Google Groups 上有一个讨论组。
也许您可以尝试在自己的实用程序中使用HtmlUnit的功能?
HtmlUnit 是“Java 程序的无 GUI 浏览器”。它对 HTML 文档进行建模并提供一个 API,允许您调用页面、填写表单、单击链接等……就像您在“普通”浏览器中所做的一样。
它具有相当好的 JavaScript 支持(不断改进),甚至能够使用非常复杂的 AJAX 库,根据您要使用的配置模拟 Firefox 或 Internet Explorer。
它通常用于测试目的或从网站检索信息。
使用 Firefox 的 LiveHttpHeaders 插件来查看所有 URL 详细信息,然后将 cURL 与该 URL 一起使用。LiveHttpHeaders 显示所有信息,如方法类型(发布或获取)和标题正文等。它还显示标题中的发布或获取参数,我认为这可能会对您有所帮助。
你可以使用 PhantomJS http://phantomjs.org
您可以按如下方式使用它:
var page=require("webpage");
page.open("http://monster.com",function(status){
page.evaluate(function(){
/* your javascript code here
$.ajax("....",function(result){
phantom.exit(0);
}); */
});
});