Разобрать URL, зациклить file_get_html(urls) и затем получить элемент
У меня есть сайт, который мне нужно разобрать.
Сначала мне нужно проанализировать все URL-адреса каталога на странице, затем мне нужно ввести все URL-адреса, затем снова пройти по всем URL-адресам и проанализировать URL-адреса на каждой странице, а затем пройти по всем URL-адресам и получить элемент ('.description div').
Я использую простой HTML-дом.
Но у меня есть одна проблема в момент, когда я хочу просмотреть все URL, которые я анализирую впервые. Я получаю пустую страницу
include 'simple_html_dom.php';
$catalogs = file_get_html('http://optnow.ru/catalog');
$catalogLink = [];
if(!empty($catalogs)) {
foreach( $catalogs->find('div.cat-name a') as $catalog) {
$catalogUrl = 'http://optnow.ru/' . $catalog->href . '?page=0';
$catalogLink[] = $catalogUrl;
$catalogHtml = file_get_html($catalogUrl);
$productsLink = $catalogHtml->find('.link-pv-name');
print_r($productsLink->href);
}
}
Где моя ошибка?
Благодарю.
1 ответ
Решение
Вам нужно передать массив, а не один элемент в foreach:
include 'simple_html_dom.php';
$catalog = file_get_html('http://optnow.ru/catalog');
$catalogLink = [];
if(!empty($catalog)) {
foreach( $catalog->find('div.cat-name a') as $catalogHref) {
$myLink = 'http://optnow.ru/' . $catalogHref->href . '?page=0';
$catalogLink[] = $myLink;
echo '<pre>';
print_r($myLink);
echo '</pre>';
}
foreach ($catalogLink as $catalogSingleLink ) {
if(!empty($catalogSingleLink)) {
$catalogHtml = file_get_html($catalogSingleLink);
$catalogProduct = $catalogHtml->find('.link-pv-name');
echo $catalogProduct->href;
}
}
}