Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/09/2018, 22:49
Avatar de dryant
dryant
 
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
funcion no funciona cuando le paso el argumento

Hola a todos.
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;
    } 
Esta primera funcion me devuelve correctamente un array con varias urls. Si hago un vardump de esta funcion se muestra que el array contiene 4, 5 o n elementos de tipo string y cada elemento contiene una url válida.

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;
    }

Esta segunda función recibe un array de URLS y debería devolver el array con la informacion de las peliculas. Pero da error.
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;
    }


Entonces si funciona todo.....

Alguien sabría decirme porque?

Un saludo y gracias de antenmano
__________________
Tecnología y tutoriales