2011-12-14 31 views
6

Estoy tratando de obtener código HTML de una página web que no está en el mismo dominio. El texto html se analiza & resume una receta (nombre de la receta, ingredientes principales, número de pasos) que se encuentra en esa página del código HTML.Usando JQuery para obtener el HTML de otro sitio web: ¿Posible? ¿Legal?

El usuario puede hacer clic en el enlace & ir a esa página web fuera del dominio para ver la receta.

Conozco la misma política de origen, pero ¿eso se aplica a obtener código HTML de una página web fuera del dominio nacional? Me imagino que es exactamente lo mismo que obtener XML, así que esto es legal & permitido ¿no?

¿Hay alguna forma de obtener el código/texto HTML de un dominio fuera de mi dominio doméstico?

uso de JavaScript jQuery &, la idea es limitar la cantidad de almacenamiento de servidor solicita & haciendo que el usuario realice peticiones para cada receta & analizar el HTML en el lado del cliente. Esto detiene los cuellos de botella del lado del servidor. & también significa que no tengo que pasar por el servidor & para eliminar los viejos resúmenes de las recetas desactualizadas.

Estoy abierto a Soluciones/Sugerencias en cualquier lenguaje de programación o API o etc.

+0

[Sí] (http://stackoverflow.com/questions/8336129/extracting-the-content-of-an-element-from-an-external-page/8336276#8336276) – Purag

+0

@Purag eso es sometida a la misma política de origen como cualquier otra cosa. – ArtOfWarfare

Respuesta

8

Lo que está tratando de hacer no se puede hacer usando ninguna biblioteca AJAX. La política de dominios cruzados de los navegadores no le permitirá hacer esto.

Pero puede hacerlo con una combinación de php (o cualquier otro lenguaje del lado del servidor) y AJAX. Crear un script php como esta:

<?php 
    $url=$_POST['url']; 
    if($url!="") 
     echo file_get_contents($url); 
?> 

digamos el nombre del script es fetch.php. Ahora puede lanzar una llamada AJAX desde su código jQuery a este fetch.php y obtendrá el código HTML por usted.

3

No, esto no va a funcionar a partir del lado del cliente JavaScript. El navegador lo impide por razones de seguridad. Debería hacer llamadas ajax a un script local del lado del servidor (PHP, por ejemplo) que luego buscaría el contenido (por ejemplo, mediante cURL) y devolvería el HTML que desea.

+0

qué tal esto anyorigin.com. ¿funcionaría eso y es seguro para el cliente usar (no recibirán virus/malware)? –

+2

Sí, pero lo que es es una API de JSONP, que no era su pregunta :) – AlienWebguy

+0

Motivo del vencimiento? – AlienWebguy

1

Se aplica el mismo origen. probar este código y que se enfrentará error de seguridad

$.get("other web page site", {}, function(content){ 
    $("#receipe").html(content) 
}, "html") 

por cierto, tendrá más probabilidades de violar las leyes de copyright, por lo que tener cuidado ;-)

+1

Bueno ... si lo que describe el OP (hacer un resumen del contenido de la página web y proporcionar un enlace) viola la ley de derechos de autor, entonces todos los motores de búsqueda lo hacen. –

+2

@ noah1989, sí, nunca pensé en eso. ¿Es posible que lo que hace el motor de búsqueda es ilegal al mostrar un adelanto de la página y que el propietario del contenido cree que es contraproducente demandar a los motores de búsqueda que hacen que su sitio sea "reconocible"? – OnesimusUnbound

2

Para agregar algo a las respuestas que ya tiene, puedo decirle que html no está destinado a ser utilizado como una forma de transmitir datos "como un servicio". Para ese propósito hay XML o JSON expuestos a través de SOAP o REST.

En su escenario, el mejor enfoque que puedo pensar, teniendo en cuenta aspectos técnicos y legales, es usar un iframe para mostrar el contenido externo y citar el origen del contenido del iframe, incluyendo un enlace externo como ya estas haciendo

Todavía puede intentar el enfoque del lado del servidor para recuperar el html remoto, pero una vez más, no es una forma clara de hacerlo, seguramente no es una buena práctica y posiblemente no es legal.

Si el autor del contenido desea que sea reutilizable fuera de su sitio, puede expresar esta intención haciendo que el contenido sin formato esté disponible a través de un servicio o un feed RSS/Atom.

Cuestiones relacionadas