Я использую 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
.
Любые предложения, что я делаю неправильно?
Я ценю ваши ответы!