Измените селектор в вашем цикле на:
foreach($html->find('div#sellers-table-wrap > table > tbody > tr') as $article) {
Есть другие таблицы, вложенные в эту таблицу, так что вы также просматриваете их строки.Но у них нет элементов, соответствующих селекторам, которые вы используете для назначения $item['name']
и $item['price']
, поэтому эти вызовы find()
возвращают null
, что вызывает ошибки.Этот селектор просто совпадает со строками в таблице верхнего уровня.
Вы также можете добавить проверку:
foreach($html->find('div#sellers-table-wrap > table > tbody > tr') as $article) {
$item = array();
$caption = $article->find('td.seller-name div.seller-info span.seller-info-caption', 0);
$mw = $article->find('td.offer-price span.variant-final-price span.m-w', 0);
if ($caption && $mw) {
$item['name'] = $caption->plaintext;
$item['price'] = $mw->plaintext;
$articles[] = $item;
}
}