Спарсить все ссылки, пройти по ним, спарсить ссылки, пройти по ним и получить блок с текстом. В чем ошибка?

Доброго времени суток, господа!

Возникла проблема при парсинге описания товаров.

Есть сайт optnow.ru/catalog. Для начала нужно спарсить все ссылки категории, затем пройти по категориям, спарсить все ссылки на товары(проблемы с пагинацией не будет, т.к весь список товаров доступен по ?page=0), пройти по всем товаром и спарсить блок ('.description div').

Использую Simple Html Dom

include 'simple_html_dom.php';
	$site = 'http://optnow.ru/catalog';
	$data = file_get_html($site);
	$catalogLink = array();
	if(!empty($data)) {
		foreach($data->find('div.cat-name a') as $catalog) {
			$catalogLink['url'] = $catalog->href;
			$urls[] = $catalogLink;
		}
		foreach($urls as $url => $k) {
			foreach($k as $n) {
				$catalogLink = 'http://optnow.ru/' . $n . '?page=0';
				$productData = file_get_html($catalogLink);
				$productLink['url'] = $productData->find('.link-pv-name')->href;
				$productUrls[] = $productLink;
			}
		}

Сергей и Василий подсказали мне, что у меня $href не является объектом, поэтому сделал так
foreach($productUrls as $productUrl => $hrefs) {
			foreach($hrefs as $href) {
				$link = new simple_html_dom();
				$hrefLink = 'http://optnow.ru/' . $href;
				echo $hrefLink;
				$linkData = $link->load($hrefLink);
				$productDesc = $linkData->find('.description div p');
				print_r($linkData);
				echo '<pre>';
				print_r($productDesc);
				echo '</pre>';
			}
		}
	}

В итоге ругается получаю такой массив

http://optnow.ru/simple_html_dom Object ( [root] => simple_html_dom_node Object ( [nodetype] => 5 [tag] => root [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( [0] =>  и т.д


В чем моя ошибка, как быть? Бьюсь с этим третий день. есть еще другой вариант парсера, там чуть меньше foreach
  • Вопрос задан
  • 889 просмотров
Решения вопроса 1
HectorPrima
@HectorPrima
программист
Вы невнимательный. Ссылки на странице с товаром так же нужно перебирать...
<?php
  include 'simple_html_dom.php';
  $site = 'http://optnow.ru/catalog';
  $data = file_get_html($site);
  $catalogLink = array();
  if(!empty($data)) {
    foreach($data->find('div.cat-name a') as $catalog) {
      $catalogLink['url'] = $catalog->href;
      $urls[] = $catalogLink;
    }
    foreach($urls as $url => $k) {
      foreach($k as $n) {
        $catalogLink = 'http://optnow.ru/' . $n . '?page=0';
        $productData = file_get_html($catalogLink);
// смотрим отсюда
        foreach($productData->find('.link-pv-name') as $link) {
            $productLink['url'] = $link->href;
            $productUrls[] = $productLink;
        }
      }
    }
  }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы