嗨我想从每个节点提取数据,但我不知道该怎么做,真的很感激,如果有人给我一些指导
<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";
});
答案 0 :(得分:1)
你是以正确的方式,只是你指的是你的html标签,其中包含tr
类,而且我在你的html中看到你没有,所以,这就是为什么你没有成功&#34;。
选中此项,您可以访问每个tr
元素,并以这种方式获取文字:
$crawler->filter('tr')->each(function($node) {
print_r($node->text());
});
请注意,输出为node
,因此您无法使用echo
,而我只使用tr
来引用该元素。< / p>
而且你也可以做到这一点,这似乎更像是你想要得到的东西:
$crawler->filter('tr')->each(function($node) {
$node->filter('td')->each(function($nested_node) {
echo $nested_node->text() . "\n";
});
});
这是获取tr
的所有tr
得到td
,然后通过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";
});
});
希望它有所帮助。