2016-12-16 6 views
-1

als ich versuchte, Goutte innerhalb einer while-Schleife die goutte Instanz verwenden nur einmal erstellt und jetzt wiederholte auf das 20-fache, wo, wie ich jede Schleife eine neue Instanz soll. das Ergebnis der gefilterten Daten aus ist eine Wiederholung der Daten auf der ersten Instanz zwanzigmal, wo, wie, was ich will, ist die separaten Daten auf alle 20 Seiten.goutte HTTP-Anforderung Erstellen nicht mehrere Instanzen

while($count <=20) { 
     $new_url = $url .$count; 
     $check[] = $new_url; 
     //get a goutte object of each new url returned after each loop 
     $crawler = Goutte::request('GET', $new_url); 
     //get all text from a table data of class narrow 
     $results = $crawler->filter($lin)->each(function ($node, $i) { 

      return $node->text(); 
     }); 
    $pattern = 'tr>td.pu>a'; 
     //get all the links inside table data of class a 
    $links = $crawler->filter($pattern)->each(function ($node, $i) { 
     $href = $node->extract(array('href')); // This is a DOMElement Object 
      return $href; 
    }); 
     //filter the links for the needed one which is always greater than 30 characters 
foreach($links as $link){ 
    if(strlen($link[0]) > 30){ 
     $p_links[] = $link; 
    } 
} 
    for($i =0; $i<count($results)-3; $i++){ 
     $content[] = ['comments' => $results[$i], 'links' => 'http://www.nairaland.com' . $p_links[$i][0]]; 
    } 
     //add the data to an array 
     $data[] = $content; 
     $count++; 
     $crawler = null; 
    } 

dann kehrte ich Daten außerhalb der while-Schleife

Antwort

0

Ich war schließlich in der Lage, dies zu lösen, indem sie den gesamten goutte Code innerhalb der Schleife auf eine andere Funktion zu bewegen und dann in der Schleife die Funktion aufrufen. Das funktionierte, da jede goutte-Instanz unabhängig erstellt und pro Funktionsaufruf innerhalb der Schleife verwendet wurde.

0

Sie Sie eigene Integration verwenden (Goutte in Lavavel), so wenden Sie sich bitte an Ihren Goutte::request() sehen den Grund zu finden.

Geben Sie bitte auch nur verwandten Code in der Zukunft, um das Verständnis eines Problems zu vereinfachen (Ich denke, der meiste Code innerhalb der Schleife ist nicht mit dem Problem in diesem Beitrag verbunden, aber vielleicht bin ich falsch).

+0

ok .... in der Tat war es eher ein goutte Problem .... ich Ihren Rat daran setzen wird. Danke für den Kommentar. Ich habe es jetzt gelöst. – itsdenty