2017-05-06 215 views
1

您好我想提取的每一個節點的數據,但我不知道該怎麼做,真的感激,如果有人給我一些指導GOUTTE提取數據

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

這裏是我的PHP代碼:

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

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

回答

1

你以正確的方式,只是你指的是具有類tr和我在你的HTML見過你有沒有你的HTML標籤,所以,這就是爲什麼你不沒有「成功」。

檢查這一點,你可以訪問你的tr元素中的每一個,並獲得這種方式中的文本:

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

注意輸出是node,所以你不能使用echo,還有我只使用tr來引用元素。

,你也可以做到這一點,那就是更多的似乎也許你想要得到什麼:

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

這是讓所有的獲得tr在每trtd然後td對這些元素獲取文本內。

就是這樣,這是代碼。

<?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"; 
    }); 
}); 

希望它有幫助。