打开网页并使用JavaScript解析它

时间:2009-02-28 11:46:06

标签: javascript regex parsing webpage

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

这可能没有来自服务器端语言的任何帮助吗?如果是这样,请发送给我一个我能做到的方向。

全部谢谢

5 个答案:

答案 0 :(得分:31)

您可以使用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 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文件授予权限,则允许跨域请求。

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

答案 1 :(得分:7)

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

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

答案 2 :(得分:3)

你会使用AJAX。这将对有问题的URL发出Get请求并返回响应HTML。 Jquery使这很容易,例如。

$.get("test.php");

http://docs.jquery.com/Ajax

安德鲁

答案 3 :(得分:2)

您可以在iframe中打开新窗口:

http://www.w3schools.com/TAGS/tag_iframe.asp

虽然请注意,如果您打开的网站来自不同的网址,则Javascript访问权限有限。这是为了防止跨站点脚本攻击:

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

答案 4 :(得分:0)

您可以尝试使用提取及其回调

fetch('https://api.codetabs.com/v1/proxy?quest=google.com').then((response) => response.text()).then((text) => console.log(text));