-->

命令行的网址使用JavaScript capabliity取(Command line URL fe

2019-09-18 04:51发布

我使用的卷曲,PHP和httplib2都在Python抓取URL。

然而,也有一些使用JavaScript(AJAX)已加载的页面,他们只是覆盖网页的特定部分之后后检索数据页。

那么,有没有任何命令行实用工具,可以处理JavaScript?

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

你会看到,阿贾克斯之后得到的作业列表。 所以,如果我想基于我的关键字搜索作业拉,我会没有工作取得的页面。

但通过浏览器它的工作原理。

Answer 1:

找萤火虫 ,看到了网址为Ajax请求。 然后,您可以使用卷曲与URL。



Answer 2:

有2种方式来处理这个问题。 使用完全基于浏览器的客户端一样写下您的屏幕刮刀的Webkit ,或者去到实际的网页,并找出了AJAX请求在做什么,直接做请求。 然后,您需要解析过程的结果。 使用Firebug来帮助你。

看看这篇文章关于这一主题的更多信息。 该upvoted答案建议使用测试工具来驱动一个真正的浏览器。 什么是一个很好的工具,Java语言支持屏幕刮?



Answer 3:

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

我没有因为约翰Resig的第一个版本发挥它,所以我不知道很多关于如何使用它,但有一个在谷歌网上论坛讨论小组 。



Answer 4:

也许你可以尝试使用的功能的HtmlUnit在您自己的效用?

是的HtmlUnit一个“无图形界面的浏览器的Java程序。” 它的模型HTML文档,并提供了一个API,可以让您调用页面,填写表单,点击链接,等等......就像你在“正常”的浏览器做。

它具有相当不错的JavaScript的支持(这是不断提高),并能甚至相当复杂的AJAX库工作,无论是模拟Firefox或根据您想使用的配置IE浏览器。

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



Answer 5:

使用的LiveHTTPHeaders插件在Firefox的看到所有URL详细信息,然后使用curl与网址。 显示的LiveHTTPHeaders样型方法的所有信息(POST或GET)和头体等也表现出后或得到头参数我想这可能会帮助你。



Answer 6:

您可以使用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);
           }); */
  });
});


文章来源: Command line URL fetch with JavaScript capabliity