3

我在 python 中使用 curl、php 和 httplib2 来获取 URL。

但是,有些页面在加载页面后使用 JavaScript (AJAX) 检索数据,然后它们只是覆盖页面的特定部分。

那么,是否有任何可以处理 JavaScript 的命令行实用程序?

要知道我的意思,请访问:monster.com 并尝试寻找工作。

您将看到 Ajax 正在获取作业列表。所以,如果我想根据我的关键字搜索来获取工作,我会得到没有工作的页面。

但是通过浏览器它可以工作。

4

6 回答 6

0

获取 FireBug并查看该 Ajax 请求的 URL。然后,您可以将 curl 与该 URL 一起使用。

于 2009-07-09T20:32:28.160 回答
0

有两种方法可以处理这个问题。使用基于浏览器的完整客户端(如Webkit )编写屏幕抓取工具,或转到实际页面并找出 AJAX 请求正在做什么,然后直接请求。然后,您当然需要解析结果。使用萤火虫来帮助你。

查看这篇文章以获取有关该主题的更多信息。赞成的答案建议使用测试工具来驱动真正的浏览器。 什么是支持 Javascript 的屏幕抓取的好工具?

于 2009-07-09T20:34:08.767 回答
0

我认为env.js可以处理<script>元素。它在Rhino JavaScript 解释器中运行并且有它自己的 XMLHttpRequest 对象,所以如果它不自动运行脚本,你至少应该能够手动运行脚本(选择所有<script>标签,获取 .js 文件,然后调用)。eval不过要小心运行您不信任的脚本,因为它们可以使用任何 Java 类。

自从 John Resig 的第一个版本之后我就没有玩过它,所以我不太了解如何使用它,但是Google Groups 上有一个讨论组

于 2009-07-09T21:11:25.710 回答
0

也许您可以尝试在自己的实用程序中使用HtmlUnit的功能?

HtmlUnit 是“Java 程序的无 GUI 浏览器”。它对 HTML 文档进行建模并提供一个 API,允许您调用页面、填写表单、单击链接等……就像您在“普通”浏览器中所做的一样。

它具有相当好的 JavaScript 支持(不断改进),甚至能够使用非常复杂的 AJAX 库,根据您要使用的配置模拟 Firefox 或 Internet Explorer。

它通常用于测试目的或从网站检索信息。

于 2009-07-10T02:46:36.173 回答
0

使用 Firefox 的 LiveHttpHeaders 插件来查看所有 URL 详细信息,然后将 cURL 与该 URL 一起使用。LiveHttpHeaders 显示所有信息,如方法类型(发布或获取)和标题正文等。它还显示标题中的发布或获取参数,我认为这可能会对您有所帮助。

于 2009-07-20T05:45:17.993 回答
0

你可以使用 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);
           }); */
  });
});
于 2014-05-07T16:46:41.447 回答