¿Cómo analizar el contenido de un dentro de mi página hecha en PHP?

publicado por: Anonymous

Tengo un enlace y hago un simple iframe, como este:

<iframe src="URL"></iframe>

Necesito conocer el número de <h1>s que el iframe contiene y el contenido de estos Headline 1. ¿Cómo puedo hacerlo?

solución

Si el iframe está en tu dominio, puedes acceder a él mediante iframe.contentDocument y a partir de allí seleccionar cualquier elemento del DOM.

const iframe = document.getElementById('mi-iframe');
const doc = iframe.contentDocument;
const h1 = doc.querySelector('h1:first-of-type');

Si el iframe está en otro dominio obtendrás un error al acceder a contentDocument porque por cuestiones de seguridad, los navegadores tienen prohibido el acceso al DOM de dominios externos. En este caso puedes hacer algo de scrapping o extraer el HTML mediante una petición:

$url = $_GET['url'];
echo file_get_contents($url);

El código anterior lee el HTML de la url que le pasas por AJAX. Finalmente, recibes el HTML y creas un árbol DOM mediante DOMParser#parseFromString:

const xhr = new XMLHttpRequest();
xhr.open('GET', 'getExternalHTML.php'); // archivo PHP que devuelve HTML
xhr.onload = () => {
  if (xhr.status === 200 && xhr.readyState === 4) {
    const doc = new DOMParser().parseFromString(xhr.responseText);
    const h1 = doc.querySelector('h1:first-of-type');
    // manejar el h1
  }
};
xhr.send('url=' + iframe.src);

Una vez creado el árbol DOM puedes manejarlo como de costumbre.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published.