Goutte 从每个节点提取数据

Goutte extract data from every node

嗨,我想从每个节点提取数据,但我不知道该怎么做,如果有人能给我一些指导,我将不胜感激

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

你的方法是对的,只是你指的是你的 html 标签,其中有 class tr,正如我在你的 [=37] 中看到的=] 你有 none,所以,这就是你没有 "success".

的原因

检查这个,您可以访问每个 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,每个 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";
  });
});

希望对您有所帮助。