Estamos en un trabajo de la carrera en la que tenemos que hacer web scrapping de una web e integrarlo con otras fuentes de información y os escribo porque ye llevo 2 días intentando solucionar un problema que no consigo encontrar la solución.
Tengo una función que me devuelve un array de links.
Y otra función que como argumento recibo un array de urls y por cada url me obtiene datos de cada una de las url del array.
El código es el siguiente:
Función 1:
Código PHP:
function get_urls_l1($keyword)
{
$url = $this->create_search_url_l1($keyword);
$doc = new DOMDocument();
$doc->loadHTML(file_get_contents($url));
$div_results = new DOMXPath($doc);
$elements = $div_results->query("/html/body/main/section/div/div[1]/div[2]");
$l1_links = array();
$i = 0;
foreach ($elements as $element) {
$enlaces = $element->getElementsByTagName("a");
foreach ($enlaces as $enlace) {
$l1_links[$i] = $enlace->getAttribute("href") . "<br>";
$i++;
}
}
return $l1_links;
}
Función 2:
Código PHP:
function get_info($urls){
$films = array(array());
foreach ($urls as $url){
$films_mw = $this->get_film_info_from_sinlge_url($url);
for ($i=0; $i<=count($films_gt); $i++){
array_push($films, $films_mw[$i]);
}
}
return $films;
}
}
Pero lo curioso es que si yo dentro del foreach le pongo la url manualmente (copiada de un elemento del vardump anterior) funciona correctamente! es decir, si yo pongo la funcion para comprobar asi:
Código PHP:
function get_info($urls){
$films = array(array());
foreach ($urls as $url){
$url = "https://movieweb.com/movie/the-predator/";
$films_mw = $this->get_film_info_from_sinlge_url($url);
for ($i=0; $i<=count($films_gt); $i++){
array_push($films, $films_mw[$i]);
}
}
return $films;
}
}
Alguien sabría decirme porque?
Un saludo y gracias de antenmano