2017-05-06 1 views
1

Hallo, ich möchte von jedem Knoten Daten extrahieren, aber ich weiß nicht, wie es zu tun und wirklich zu schätzen, wenn jemand mir einige Hinweise gebenGoutte Extrahieren von Daten von jedem Knoten

<table> 
    <tr> 
     <td>item1</td> 
     <td>item2</td> 
    </tr> 
    <tr> 
     <td>item3</td> 
     <td>item4</td> 
    </tr> 
</table> 

und hier ist es meine php Code:

$client = new Client(); 
    $crawler = $client->request('GET', 'https://www.socom'); 

    $crawler->filter('.tr')->each(function ($node) { 
     print $node->filter('.td')->text()."\n"; 
    }); 

Antwort

1

Sie in der richtigen Art und Weise sind, nur sind Sie auf Ihre hTML-Tags beziehen, die die Klasse haben tr und wie ich in Ihrem hTML gesehen haben Sie keine haben, so, das ist, warum Sie don habe keinen Erfolg.

überprüfen diese, können Sie zu jeder Ihrer tr Elemente zuzugreifen und den Text innerhalb dieser Art und Weise zu erhalten:

$crawler->filter('tr')->each(function($node) { 
    print_r($node->text()); 
}); 

Beachten Sie die Ausgabe ist ein node so kann man nicht echo verwenden, und da ich benutze nur tr, um einen Verweis auf das Element zu machen.

Und Sie können dies auch tun, das ist mehr schien vielleicht zu dem, was Sie wollten:

$crawler->filter('tr')->each(function($node) { 
    $node->filter('td')->each(function($nested_node) { 
    echo $nested_node->text() . "\n"; 
    }); 
}); 

Diese erhalten ist alle tr über jeden tr seine td und dann über jene td Elemente den Text bekommen Innerhalb.

Und das ist es, das ist der Code.

<?php 

require __DIR__ . '/vendor/autoload.php'; 

use Goutte\Client; 

$client = new Client(); 

$crawler = $client->request('GET', 'your_url'); 

$crawler->filter('tr')->each(function($node) { 
    print_r($node->text()); 
}); 

$crawler->filter('tr')->each(function($node) { 
    $node->filter('td')->each(function($nested_node) { 
    echo $nested_node->text() . "\n"; 
    }); 
}); 

Ich hoffe, es hilft.