Здравствуйте.
Дали задание спарсить сайт
https://itp.ne.jp/genre_dir/9570/pg/1/?sr=1&ngr=1&... .
Нужно вытащить данные о каждой компании
Не занимался ни чем подобным раньше, поэтому возникли трудности. Использовал curl и библиотеку Simple HTML DOM.
require_once('simple_html_dom.php');
function curl_get($url, $referer = 'https://www.google.ru/') {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, $referer);
$out = curl_exec($ch);
curl_close($ch);
return $out;
}
$html = curl_get('https://itp.ne.jp/genre_dir/9570/pg/1/?sr=1&ngr=1&num=20');
$dom = str_get_html($html);
$companies = $dom->find('.highlightedResultsBox section');
$res = '';
$res .= '<table style="">
<thead>
<tr>
<th scope="row">№</th>
<th>Имя компании</th>
<th>Адрес</th>
<th>Телефон</th>
<th>Email</th>
</tr>
</thead>
<tbody>';
$i = 1;
foreach ($companies as $company) {
$name = $company->find('h4 a', 0);
$address = $company->find('p', 1);
$phone = $company->find('p', 2);
$email = $company->find('p a', 3);
$data['name'] = $name->plaintext;
$data['address'] = $address->plaintext;
$data['phone'] = $phone->plaintext;
$data['email'] = $email->plaintext;
$attr[] = $email->attr;
foreach($attr as $item){
if (!empty($item['onclick']) && isset($item['onclick'])) {
$data['email'] = $item['onclick'];
}
else break;
}
$res .= '<tr>';
$res .= '<td>' . $i . '</td>';
$res .= '<td>' . $data['name'] . '</td>';
$res .= '<td>' . $data['address'] . '</td>';
$res .= '<td>' . $data['phone'] . '</td>';
$res .= '<td>' . $data['email'] . '</td>';
$res .= '</tr>';
$i++;
}
$res .= '</tbody></table>';
echo $res;
Вот что выдает
Выводится только два элемента и почему то каждый раз разные данные.
Подскажите, пожалуйста, что не так делаю. Спасибо