使用 xPath(javascript, jquery) 从 url 链接解析 html 页面

问题描述 投票:0回答:4

我对 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.
javascript jquery parsing xpath parse-cloud-code
4个回答
1
投票

您无法向与为发出请求的资源提供服务的域不同的域发出 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。


0
投票

查看此线程,了解如何从 URL 获取 HTML。

您可以使用 jQuery 函数

parseHTML
将字符串转换为一堆 DOM 对象,然后从这些 DOM 对象中选择元素

如果您坚持使用 XPath,那么您可能想看看

document.evaluate
,或 这个线程


0
投票

我认为SlimerJS会对你有所帮助。


0
投票

@Valee

请问您的链接中是否要表达以下内容:

面向 Web 开发人员的可编写脚本的浏览器,允许通过外部 JavaScript 脚本与网页进行交互。它对于功能测试、页面自动化、网络监控、屏幕捕获、网页抓取等很有用。

© www.soinside.com 2019 - 2024. All rights reserved.