具有JavaScript功能的命令行URL提取

时间:2009-07-09 20:29:28

标签: javascript curl wget httplib2

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

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

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

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

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

但是通过浏览器可以运行。

6 个答案:

答案 0 :(得分:0)

Get FireBug并查看该Ajax请求的URL。然后,您可以使用该URL的curl。

答案 1 :(得分:0)

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

查看此帖子以获取有关该主题的更多信息。推特回答建议使用测试工具来驱动真正的浏览器。 What's a good tool to screen-scrape with Javascript support?

答案 2 :(得分:0)

我认为env.js可以处理<script>元素。它运行在Rhino JavaScript interpreter并拥有自己的XMLHttpRequest对象,因此您至少应该能够手动运行脚本(选择所有<script>标签,获取.js文件,然后调用{{1如果它不自动运行它们。但要注意运行不信任的脚本,因为它们可以使用任何Java类。

自John Resig的第一个版本以来,我没有玩过它,所以我对如何使用它并不了解,但是有一个discussion group on Google Groups

答案 3 :(得分:0)

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

  

HtmlUnit是一个“GUI-Less浏览器”   Java程序“。它模拟HTML   文档并提供API   允许你调用页面,填写   表格,点击链接等...就像   你在“普通”的浏览器中做。

     

它有相当不错的JavaScript支持   (这是不断改进)并且是   能够工作甚至相当复杂   AJAX库,模拟其中之一   Firefox或Internet Explorer依赖   在你想要使用的配置上。

     

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

答案 4 :(得分:0)

使用LiveHttpHeaders为Firefox插件查看所有网址详细信息,然后将cURL与该网址一起使用。 LiveHttpHeaders显示所有信息,如方法类型(post或get)和header body等。 它还显示标题中的post或get参数 我认为这可能对你有所帮助。

答案 5 :(得分: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);
           }); */
  });
});