3

我需要解析远程 html 页面(例如:www.mywesite.com/home)如何获取该网站的 html 页面源以及如何解析该页面

那个html是这样的

 <html>
     <body>
        <div class="my-class1">
             <a href="home/link?id=1">hello</a>
        </div>

        <div class="my-class1">
             <a href="home/link?id=2">hey</a>
        </div>

        <div class="my-class1">
             <a href="home/link?id=3">bye</a>
        </div>
     </body>
 </html>

我想输出为

 hello
 hey
 bye 

我没有使用任何服务器端技术(如 java、.net)我只想使用 java 脚本来实现这一点

是否可以使用纯 javaScript 或任何其他 jQuery 插件解析远程 html 页面

提前致谢

4

2 回答 2

2

普通浏览器javascript无法从任何服务器访问远程页面的内容,除了自己的。

你可以:

  1. 在您自己的服务器上有一个合作脚本来获取远程内容

  2. 在远程服务器的配合下,您可以通过适当的 CORS ( http://en.wikipedia.org/wiki/Cross-origin_resource_sharing ) 安排访问内容。

  3. 再次与远程服务器合作,如果它通过 javascript 提供其内容,您可以通过创建内联脚本元素来访问它。“JSONP”就是这种方法的一个例子。

  4. 如果您编写浏览器插件或插件 - 对于允许使用 javascript 编写此类内容的浏览器 - 那么您不会以同样的方式受浏览器安全模型的约束。

于 2013-04-04T13:10:56.283 回答
-2

假设origin固定等,这是我使用的方法:

// 获取html的body部分
txt = txt.substr( txt.indexOf('<body>')+6 );
txt = txt.substr(0, txt.indexof('</body>')-1);

// 将 body 粘贴到 div 中
var div = document.createElement('div');
div.innerHTML = txt;

// 从每个元素中提取文本内容(或更有趣的东西)
Array.prototype.slice(div.querySelectorAll('*')).forEach(function(el) {
   if( el.textContent ) console.log( el.textContent );
});
于 2013-04-04T13:17:05.650 回答