我对 Javascript/jQuery 真的很陌生。我之前用 Objective-C 和 Swift 编写过代码,可以使用 XPath 和 Hpple 之类的框架来解析 (x)html 网站。
现在我必须在 JavaScript 中做类似的事情(来自 parse.com 的云代码)。
我现在的问题是,我想这样解析:
var url = "http://www.google.com";
var xpath = "//body";
someJavaScriptMagic.parse(url, xpath);
我经常看到人们使用
document.evaluate
方法,但他们解析的是他们当前所在的网站,而不是另一个网站。
有办法做到吗?
我不知道这是否重要,但我正在使用 parse.com 的 CloudCode
编辑:
我已经尝试过使用ajax查询:
$.ajax({ url: 'http://www.digitec.ch', success: function(data) { alert(data); } });
但是我每次都会收到以下错误:
XMLHttpRequest cannot load http://www.digitec.ch/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access.
您无法向与为发出请求的资源提供服务的域不同的域发出 AJAX 请求(即 JavaScript 中的 HTTP 请求)。换句话说,如果您的 JavaScript 是从“foo.com/some.js”提供的,并且它试图获取“google.com”,它将失败。这称为同源策略,它是 Web 应用程序安全性的基本原则。在这里阅读:http://en.wikipedia.org/wiki/Same-origin_policy。谷歌搜索“Access-Control-Allow-Origin”(来自您的错误)也会为您提供更多有关此的信息。
您可以通过向您自己的域中充当代理的脚本发出请求来解决此问题。例如:
foo.com/some.js
var url = "http://www.google.com";
someJavaScriptMagic.get("foo.com/fetchUrl?url="+url);
然后您有一个后端脚本接受该请求,然后向 CGI 参数“url”指定的主机发出 HTTP 请求并返回 HTML。
我认为SlimerJS会对你有所帮助。
请问您的链接中是否要表达以下内容:
面向 Web 开发人员的可编写脚本的浏览器,允许通过外部 JavaScript 脚本与网页进行交互。它对于功能测试、页面自动化、网络监控、屏幕捕获、网页抓取等很有用。