当前位置:  开发笔记 > 编程语言 > 正文

打开网页并使用JavaScript解析它

如何解决《打开网页并使用JavaScript解析它》经验,为你挑选了2个好方法。

我知道JavaScript可以在新窗口中打开链接,但是可以打开网页而无需在窗口中打开它或将其显示给用户吗?我想要做的是解析该网页的某些文本并将其用作变量.

没有服务器端语言的帮助,这可能吗?如果是这样,请向我发送我可以实现此目标的方向.

谢谢大家



1> Paul Dixon..:

您可以使用XMLHttpRequest对象来执行此操作.这是一个简单的例子

var req = new XMLHttpRequest();  
req.open('GET', 'http://www.mydomain.com/', false);   
req.send(null);  
if(req.status == 200)  
   dump(req.responseText);

加载后,您可以使用req.responseText成员上的javascript正则表达式执行解析/抓取.

更多详情...

在实践中,您需要做一些以跨平台方式获取XMLHttpRequest对象,例如:

var ua = navigator.userAgent.toLowerCase();
if (!window.ActiveXObject)
  req = new XMLHttpRequest();
else if (ua.indexOf('msie 5') == -1)
  req = new ActiveXObject("Msxml2.XMLHTTP");
else
  req = new ActiveXObject("Microsoft.XMLHTTP");

或者使用图书馆......

或者,你可以节省所有麻烦,只需使用像jQuery或Prototype这样的库来为你解决这个问题.

虽然同源政策可能会咬你

请注意,由于同源策略,您请求的页面必须与发出请求的页面位于同一个域中.如果要请求远程页面,则必须通过服务器端脚本对其进行代理.

另一种可能的解决方法是使用Flash来发出请求,如果目标站点使用适当配置的crossdomain.xml文件授予权限,则允许跨域请求.

这是一篇关于同源政策主题的好文章:

同源政策第1部分:为什么我们遇到像XSS和XSRF/CSRF这样的问题



2> guest..:

无论Origin是一个开源库,它允许你使用纯粹的Javascript进行抓取.它还解决了"同域起源"问题. http://www.whateverorigin.org/

$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){
    alert(data.contents);
});

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有