我在php中使用curl,在python中使用httplib2来获取URL。
但是,有些页面在您加载页面后使用JavaScript(AJAX)来检索数据,之后它们只是覆盖页面的特定部分。
那么,是否有可以处理JavaScript的命令行实用程序?
要知道我的意思,请访问:monster.com并尝试寻找工作。
您会看到Ajax随后会获得作业列表。所以,如果我想根据我的关键字搜索提取作业,我会得到没有工作的页面。
但是通过浏览器可以运行。
答案 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);
}); */
});
});