Abrir página web y analizarla usando JavaScript


Sé que JavaScript puede abrir un enlace en una nueva ventana, pero ¿es posible abrir una página web sin abrirla en una ventana o mostrarla al usuario? Lo que quiero hacer es analizar esa página web para algún texto y usarlo como variables.

¿Es esto posible sin ninguna ayuda de los lenguajes del lado del servidor? Si es así, por favor envíeme en una dirección que pueda lograr esto.

Gracias a todos

Author: Abs, 2009-02-28

4 answers

Puede usar un objeto XMLHttpRequest para hacer esto. He aquí un ejemplo simple

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

Una vez cargado, puede realizar su análisis/raspado utilizando expresiones regulares javascript en el req.Miembro de responseText.

Más detalles...

En la práctica, debe hacer un poco más para obtener el objeto XMLHttpRequest de manera multiplataforma, por ejemplo:

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");

O utilice una biblioteca...

Alternativamente, puede ahorrarse toda la molestia y simplemente use una biblioteca como jQueryo Prototype para encargarse de esto por usted.

Política del mismo origen puede morder sin embargo...

Tenga en cuenta que debido a la política del mismo origen , la página que solicita debe ser del mismo dominio que la página que realiza la solicitud. Si desea solicitar una página remota, tendrá que proxy a través de un script del lado del servidor.

Otra posible solución es usar Flash para hacer la solicitud, lo que permite el cruce de dominios solicita si el sitio de destino otorga permiso con un dominio cruzado configurado adecuadamente.archivo xml.

Aquí hay un buen artículo sobre el tema de la política del mismo origen:

 30
Author: Paul Dixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-28 12:19:07

Whatever Origin es una biblioteca de código abierto que le permite usar puramente Javascript para hacer scraping. También resuelve el problema del "mismo dominio de origen". http://www.whateverorigin.org /

$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){
    alert(data.contents);
});
 7
Author: guest,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-07 08:14:15

Usarías AJAX. Esto haría una solicitud Get a la URL en cuestión y devolvería el HTML de respuesta. Jquery hace esto muy fácil, por ejemplo,

$.get("test.php");

Http://docs.jquery.com/Ajax

Andrew

 3
Author: REA_ANDREW,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-28 11:53:11

Puede abrir la nueva ventana en un iframe:

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

Aunque tenga en cuenta que el acceso a Javascript está limitado si el sitio que abre es de una URL diferente. Esto es para evitar ataques de scripting entre sitios:

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

 2
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-28 11:53:05