Javascript:获取远程网页的 HTML

Posted

技术标签:

【中文标题】Javascript:获取远程网页的 HTML【英文标题】:Javascript : get HTML of remote web page 【发布时间】:2014-10-06 02:06:31 【问题描述】:

我想创建一个脚本,从网站上的多个页面检索 html 并解析该 DOM 内容以提取我想要的数据。

我想用 javascript 做这件事的原因是我想使用 JQuery 的 sizzle 引擎来轻松解析 DOM 以检索信息。

但是对于大多数浏览器的跨域策略,我还没有找到解决方案。我偶然发现了 JSONP,但由于该网站没有明确支持它,所以我不能使用这种方法。

我也考虑过使用 IFRAMES,但 Jquery 似乎也无法检索内容...

所以我的问题真的归结为:有没有办法使用 javascript/ajax/jquery 获取远程网页的 DOM?是否有允许这样做的库?

【问题讨论】:

您首先需要使用 php 之类的工具来获取源代码。 我强烈推荐一个简单的用户脚本;油脂猴或篡改猴。 php 会让你走得更远,但与 jQuery 相比,它是 DOM 打击(它和 HTML 一样糟糕),并且它不能处理动态数据或模板。所以那时你必须开始学习诸如基于 node.js 的假浏览器之类的东西,而从用户脚本中提取几行普通浏览器 js 就可以在几行代码中完成你想要的一切。 @MrHunter 我猜是这样,我可以将每个页面的所有内容放在一个隐藏的 DIV 中,然后使用 JQUERY 在客户端使用 javascript 解析它们中的每一个。但是我仍然想知道是否有任何方法可以仅使用 JS/JQuery 来完成这项工作 @dandavis 是的,这就是为什么我想在客户端进行解析,因为 JQUERY 的选择器/解析器引擎非常强大,但我不在乎 PHP 是否是获取内容的人第一名(尽管我想知道是否有使用 JS 的方法!)。 @domonicbri7:好吧,只需使用我提到的“猴子”扩展之一,就可以无缝地避开正常的起源限制。简而言之,您可以使用您的正常登录凭据在他们的网站上运行您的代码,并且由于它在他们的网站上,因此它与脚本的来源相同并且您是黄金。如果没有浏览器扩展,您还可以使用 YQL 作为服务器从其他站点获取 html 到您控制的域。您还可以将书签用作一次性用户脚本。 【参考方案1】:

除非他们允许,否则无法通过客户端脚本从跨域读取数据。

您应该寻找一种解决方案来读取服务器端的数据,然后您可以根据需要在客户端使用它。

【讨论】:

以上是关于Javascript:获取远程网页的 HTML的主要内容,如果未能解决你的问题,请参考以下文章

Android Web-View:将本地 Javascript 文件注入远程网页

如何通过chrome远程调试获取网页资源内容

WPF加载HTMLWPF与JavaScript交互

javascript 怎么获取指定url网页中的内容

如何使用 JavaScript 获取远程页面的内容?

8 JavaScript:驾驭网页-获取网页元素