如何使用纯JavaScript解析远程html页面

时间:2013-04-04 13:04:42

标签: javascript jquery html html-parsing

我要求解析远程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脚本来实现这个目标

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

提前致谢

2 个答案:

答案 0 :(得分:2)

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

你可以:

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

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

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

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

答案 1 :(得分:-2)

假设origin已修复等,这是我使用的方法:

// get body part of html
txt = txt.substr( txt.indexOf('<body>')+6 );
txt = txt.substr( 0, txt.indexof('</body>')-1 );

// stick body into div
var div = document.createElement('div');
div.innerHTML = txt;

// extract textContent from each element (or something more interesting)
Array.prototype.slice( div.querySelectorAll('*') ).forEach( function(el) {
   if( el.textContent ) console.log( el.textContent );
});