我使用的卷曲,PHP和httplib2都在Python抓取URL。
然而,也有一些使用JavaScript(AJAX)已加载的页面,他们只是覆盖网页的特定部分之后后检索数据页。
那么,有没有任何命令行实用工具,可以处理JavaScript?
要知道我的意思去:monster.com,并尝试寻找工作。
你会看到,阿贾克斯之后得到的作业列表。 所以,如果我想基于我的关键字搜索作业拉,我会没有工作取得的页面。
但通过浏览器它的工作原理。
我使用的卷曲,PHP和httplib2都在Python抓取URL。
然而,也有一些使用JavaScript(AJAX)已加载的页面,他们只是覆盖网页的特定部分之后后检索数据页。
那么,有没有任何命令行实用工具,可以处理JavaScript?
要知道我的意思去:monster.com,并尝试寻找工作。
你会看到,阿贾克斯之后得到的作业列表。 所以,如果我想基于我的关键字搜索作业拉,我会没有工作取得的页面。
但通过浏览器它的工作原理。
找萤火虫 ,看到了网址为Ajax请求。 然后,您可以使用卷曲与URL。
有2种方式来处理这个问题。 使用完全基于浏览器的客户端一样写下您的屏幕刮刀的Webkit ,或者去到实际的网页,并找出了AJAX请求在做什么,直接做请求。 然后,您需要解析过程的结果。 使用Firebug来帮助你。
看看这篇文章关于这一主题的更多信息。 该upvoted答案建议使用测试工具来驱动一个真正的浏览器。 什么是一个很好的工具,Java语言支持屏幕刮?
我认为env.js可以处理<script>
元素。 它运行在Rhino的JavaScript解释器 ,并拥有自己的XMLHttpRequest对象,所以你应该能够至少手动运行脚本(选择所有<script>
标记,获得.js文件,并调用eval
),如果它不自动运行它们。 小心运行脚本,你不信任,虽然,因为他们可以使用任何Java类。
我没有因为约翰Resig的第一个版本发挥它,所以我不知道很多关于如何使用它,但有一个在谷歌网上论坛讨论小组 。
也许你可以尝试使用的功能的HtmlUnit在您自己的效用?
是的HtmlUnit一个“无图形界面的浏览器的Java程序。” 它的模型HTML文档,并提供了一个API,可以让您调用页面,填写表单,点击链接,等等......就像你在“正常”的浏览器做。
它具有相当不错的JavaScript的支持(这是不断提高),并能甚至相当复杂的AJAX库工作,无论是模拟Firefox或根据您想使用的配置IE浏览器。
它通常用于测试目的或检索网站的信息。
使用的LiveHTTPHeaders插件在Firefox的看到所有URL详细信息,然后使用curl与网址。 显示的LiveHTTPHeaders样型方法的所有信息(POST或GET)和头体等也表现出后或得到头参数我想这可能会帮助你。
您可以使用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);
}); */
});
});