На сайте есть таблицы (их кол-во может менятся),внутри таблиц есть thead ( в нем только один tr>th) и tbody (в нем может быть сколько угодно tr и в каждой строке по 7 td). На картинке в tbody 2 tr:
Задача: необходимо парсить все данные из ячеек в удобной форме и записать в БД. Как я это делал:
$doc = phpQuery::newDocument($file);
foreach ($doc->find('.calendar-table') as $leagueTable) {
$leagueTable = pq($leagueTable);
$leagueName = $leagueTable->find('thead tr th')->text();
...
}
Далее необходимо зайти в tbody и пройти по всем tr и достать все ячейки. Я пробывал, но не совсем получается:
foreach ($leagueTable->find('tbody') as $tr) {
$tr = pq($tr);
$matchDate = $tr->find('tr td.date')->html();
//и так далее все ячейки
}
$data[] = array('matchDate' => $matchDate,'awayTeam' => $awayTeam);
При var_dump получаю такой массив:
То есть там где были две строки в tbody они "склеились" в одну. Хотелось бы получить массив awayTeam с ключами 0,1 где к примеру две команды(т.е было две строки).
Вот так получилось. Проблемы были с объвлением массивов, и немного в цикле для phpQuery.
$doc = phpQuery::newDocument($file);
foreach ($doc->find('.calendar-table') as $leagueTable) {
$leagueTable = pq($leagueTable);
$leagueTable->find('.tv-channel, .bet-td')->remove();
$leagueTable->html();
$leagueName = $leagueTable->find('thead tr th')->html();
$leagueName = trim($leagueName);
$awayTeam = array();
$matchDate = array();
$homeTeam = array();
$homeTeamLogo = array();
$awayTeamLogo = array();
foreach ($leagueTable->find('tbody tr') as $tr) {
$tr = pq($tr);
$matchDate[] = $tr->find('td.date')->text();
$homeTeam[] = $tr->find('td:nth-child(2) a')->text();
$homeTeamLogo[] = $tr->find('td:nth-child(3) a img')->attr('src');
$awayTeamLogo[] = $tr->find('td:nth-child(5) a img')->attr('src');
$awayTeam[] = $tr->find('td:nth-child(6) a')->text();
}
$data[] = array(
'leagueName' => $leagueName,
'homeTeam' => $homeTeam,
'homeTeamLogo' => $homeTeamLogo,
'awayTeamLogo' => $awayTeamLogo,
'awayTeam' => $awayTeam,
);
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости