【问题标题】:How to parse a web page from a local javascript file如何从本地 javascript 文件中解析网页
【发布时间】:2014-09-19 12:27:48
【问题描述】:

我需要解析一个由远程页面的 javascript 动态生成的内容。

比如我需要从这个页面获取价格:http://www.alibaba.com/product-detail/BRG-Newest-Fashional-Protective-Case-For_1666645206.html#J-wrapper

但是价格是由javascript生成的,所以当我用ajax下载页面时,它只下载html文件,没有脚本的结果。

所以我尝试在后台嵌入一个 iframe,然后解析这个 iframe 中的文档,但是存在一个安全问题,我无法解析它。

你知道我是否还有其他方法可以做到吗?

我使用的函数是这样的:

 $.ajax({
      url: url,
      dataType: 'text',
      success: function(html, _, xhr) {});

但生成的 HTML 没有脚本信息,因此价格为空。

我也试过用:

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>contents demo</title>
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<iframe src="http://api.jquery.com/" width="80%" height="600" id="frameDemo"></iframe>

<script>
document.getElementById("frameDemo").onload = function() {
var contents = $( "#frameDemo" ).contents();
}
</script>

</body>
</html>

但我收到此错误:

Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement':
Blocked a frame with origin "null" from accessing a frame with origin "api.jquery.com".  
The frame requesting access has a protocol of "file", the frame being accessed has a protocol of "http". 
Protocols must match.

【问题讨论】:

  • 你的问题没有得到解决
  • 做这个服务器端来防止同域源策略
  • 我需要在客户端做,所以我得到了同域策略,还有其他方法吗?

标签: javascript iframe google-chrome-app


【解决方案1】:

尝试使用 chrome 应用 webview,而不是使用 iframe。它将在一个隔离的容器中运行,没有您引用的限制。但是你仍然可以和它交流。

【讨论】:

  • 谢谢,我不知道,我现在试试,如果有效,请告诉您,非常感谢!
  • 看起来,webview 只能在 Chrome 应用程序中工作,而不是在单个 html 文件中。我将探索这种可能性,但如果可以的话,我仍在寻找一种从 html 中实现的方法。
  • 仅供参考,这里是webview的链接:developer.chrome.com/apps/tags/webview
  • 啊,是的,对不起。不包含链接的不礼貌,但我恳求手机提交降级。
猜你喜欢
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 2012-05-21
  • 2015-07-15
相关资源
最近更新 更多