Hola a todos. Estoy creando una web para una práctica de la universidad, en la cual saco información de varias webs para después integrarlas entre si.
El caso es que de una de las páginas que saco la información, tengo que sacar los resultados que hay en una estructura similar a esta:
Código PHP:
div class="main-content">
<div class="post">
<a href="http://miweb1/resultado1.php">
<img alt=""
class="attachment-post-thumbnail size-post-thumbnail wp-post-image"
sizes="(max-width: 150px) 100vw, 150px"
src="http://miweb1/resultado1.jpg">
</a>
<div class="bottom-block">
Resultado 1
</div>
<div class="date-block">
10/02/2018
</div>
</div>
<div class="post">
<a href="http://miweb1/resultado2.php">
<img alt=""
class="attachment-post-thumbnail size-post-thumbnail wp-post-image"
sizes="(max-width: 150px) 100vw, 150px"
src="http://miweb1/resultado2.jpg">
</a>
<div class="bottom-block">
Resultado 2
</div>
<div class="date-block">
13/02/2018
</div>
</div>
<div class="post">
<a href="http://miweb1/resultado3.php">
<img alt=""
class="attachment-post-thumbnail size-post-thumbnail wp-post-image"
sizes="(max-width: 150px) 100vw, 150px"
src="http://miweb1/resultado3.jpg">
</a>
<div class="bottom-block">
Resultado 3
</div>
<div class="date-block">
12/02/2018
</div>
</div>
<div class="post">
<a href="http://miweb1/resultado4.php">
<img alt=""
class="attachment-post-thumbnail size-post-thumbnail wp-post-image"
sizes="(max-width: 150px) 100vw, 150px"
src="http://miweb1/resultado4.jpg">
</a>
<div class="bottom-block">
Resultado 4
</div>
<div class="date-block">
15/02/2018
</div>
</div>
</div>
Intento sacar el resultado con XPATH con la siguiente función:
Código PHP:
<?php
function get_results_l1($keyword)
{
$url = "http://miweb1/?="$keyword);
$doc = new DOMDocument();
/*
* Debido a que loadHTMLFile no admite algunas etiquetas de HTML5, generando un warning, eliminamos mensaje
* de error en la siguiente linea con la @
* */
@$doc->loadHTML(file_get_contents($url));
$div_results = new DOMXPath($doc);
$elements = $div_results->query("//div[@class='post-resultado']");
echo "<br>Vardump de elements es:<br>";
var_dump($elements);
echo "<br><br>";
$l1_links = array();
$i = 0;
foreach ($elements as $element) {
echo "<br>$element actual $i es: <br>";
var_dump($element);
echo "<br><br>";
$enlaces = $element->getElementsByTagName("a");
foreach ($enlaces as $enlace) {
$l1_links[$i] = $enlace->getAttribute("href");
echo $i."-".$l1_links[$i]."<br>";
$i++;
}
}
echo "<br>Fin foreach<br>";
return $l1_links;
}
Y el resultao que obtengo es el siguiente:
Código HTML:
Vardump de elements es:
object(DOMNodeList)#15 (1) { ["length"]=> int(0) }
Inicio el foreach
Fin foreach
Si no estoy equivocado con la query
//div[@class='post-resultado'] deberia obtener 4 nodos, uno por cada resultado que hay en la web.
Sin embargo parece que no devuelve nada...
He comprobado la expresion en un
XPATH TESTER ONLINE y si me devuelve los 4 elementos... pero sin embargo en mi web no devuelve nada...
Alguien podria orientarme un poco porque no me está devolviendo nada?
Saludos y gracias a todos!