Использование Goutte для сканирования таблицы - PullRequest
0 голосов
/ 28 января 2020

Я использую PHP 7.1.33 и "fabpot/goutte": "^4.0".

Я пытаюсь проанализировать таблицу, полученную со страницы html. Я хочу иметь название компании и ссылку.

При запуске моего скрипта я получаю: Nodelist empty

Найдите ниже моего минимального жизнеспособного примера:

        const URL = 'https://www.marketbeat.com/ratings/by-issuer';

        $firmArr = array();

        $firm = [
            'name' => null,
            'sourceTEXT' => null,
            'sourceURL' => null,
        ];

        $client = new Client();
        $content = $client->request('GET', self::URL)->html();
        $crawler = new Crawler($content, null, null);

        $table = $crawler->filter('#form1 > table')->first()->closest('table');

        $table->filter('tr')
            ->each(function (Crawler $tr) use (&$firm, &$firmArr) {
                // name
                $name = $tr->filter('td:nth-child(1)')->text(); // nodelist ist emtpy
                $firm['name'] = $name;

                // link
                $TEMP = [];
                $tr->filter('td:nth-child(1) > a')->each(function ($link) use (&$TEMP) {
                    array_push($TEMP, $link->text(), $link->attr('href'));
                });
                $firm['sourceTEXT'] = $TEMP[0];
                $firm['sourceURL'] = $TEMP[1];

                // add everything to result array
                array_push($firmArr, $firm);
            });

        return $firmArr;

Когда пытаясь получить $name Я получаю по следующей строке - $name = $tr->filter('td:nth-child(1)')->text(); - что nodelist ist emtpy.

Любые предложения, что я делаю неправильно?

Я ценю ваши ответы!

...