打开网页并使用JavaScript进行解析

问题描述 投票:28回答:5

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

这是否可能服务器端语言的任何帮助?如果是这样,请按我可以实现的方向发送给我。

谢谢所有

javascript regex parsing webpage
5个回答
31
投票
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 regular expressions来执行解析/抓取。

更多详细信息...

实际上,您需要做更多的工作才能以跨平台的方式获取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");

或使用图书馆...

或者,您可以省去很多麻烦,只需要使用jQueryPrototype之类的库来为您解决这个问题。

原产地政策可能会咬你...

请注意,由于same-origin policy,您请求的页面必须与发出请求的页面来自同一域。如果要请求远程页面,则必须通过服务器端脚本来代理它。

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

这里有一篇关于原产地政策的文章:

Same-Origin Policy Part 1: Why we’re stuck with things like XSS and XSRF/CSRF


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

3
投票
$.get("test.php");

http://docs.jquery.com/Ajax

安德鲁

2
投票
http://www.w3schools.com/TAGS/tag_iframe.asp

尽管请注意,如果您打开的网站来自其他URL,则Javascript访问受到限制。这是为了防止跨站点脚本攻击:

http://en.wikipedia.org/wiki/Cross-site_scripting


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.