Как то давно писал парсер маркета, вот метод, ищет по запросу self::$partNo, хотя сегодня можно получить доступ к
Контентный API что несомненно будет лучше для использования.
protected function YandexMarket (){
$url = 'http://market.yandex.ru/search.xml?text='.urlencode(self::$partNo); // UE40F6400
$simple = file_get_html($url);
$searh = $simple->find('.b-offers_type_guru .b-offers__title a',0)->href;
if (is_null($searh)){return false;}
$title = $simple->find('.b-offers__spec',0)->plaintext;
$simple = file_get_html('http://market.yandex.ru'.$searh);
$name = $simple->find('h1.b-page-title',0)->plaintext;
$category = $simple->find('.b-breadcrumbs__link',0)->plaintext;
$imgBig = array();
$images = $simple->find('span.b-model-pictures__small a');
if (is_null($images)){
$imgBig[] = $simple->find('.b-model-pictures__big a',0)->href;
}else{
$imgBig[] = $simple->find('.b-model-pictures__big a',0)->href;
foreach ($images as $img){
$imgBig[] = $img->href;
}
}
if (is_null($imgBig[0])){
$imgBig[0] = $simple->find('.b-model-pictures__big img',0)->src;
}
$simple = file_get_html('http://market.yandex.ru'.$simple->find('.b-switcher__item a[href^=/model-spec.xml]',0)->href) ; // на страницу с параметрами
if (!($simple->find('.b-properties',0))){return false;}
if (!($simple->find('.b-properties',0)->find('tr'))){return false;}
$description = $simple->find('.b-properties',0)->find('tr');
$descrpt = '';
foreach ($description as $el){
$descrpt .= $el->first_child()->plaintext.'§ '.$el->last_child()->plaintext.'®';
}
$description = $descrpt;
// $simple = file_get_html('http://market.yandex.ru'.$simple->find('.b-switcher__item a[href^=/product/]',0)->href); // на страницу с параметрами
// $posts = $simple->find('.b-aura-reviews');
// $array_post = array();
// foreach($posts as $post){
// $user_post = $post->find('.b-aura-username',0)->plaintext;
// $rating = $post->find('.b-aura-review__rate .b-aura-rating',0)->rate;
// $text = $post->find('.b-aura-review__verdict .b-aura-userverdict');
// foreach ($text as $element){
// if ($element->first_child()->plaintext == 'Достоинства:'){$plus = '<strong>'.$element->first_child()->plaintext.'</strong>'.$element->last_child()->plaintext;}
// if ($element->first_child()->plaintext == 'Недостатки:' ){$minus = '<strong>'.$element->first_child()->plaintext.'</strong>'.$element->last_child()->plaintext;}
// if ($element->first_child()->plaintext == 'Комментарий:'){$commet = '<strong>'.$element->first_child()->plaintext.'</strong>'.$element->last_child()->plaintext;}
// }
// $array_post[] = array(
// 'user' => $user_post ,
// 'rating' => $rating ,
// 'plus' => $plus ,
// 'minus' => $minus ,
// 'comment' => $commet
// );
// }
self::$parser = 'Yandex.Market';
self::$param = array(
'name' => $name ,
'category' => $category ,
'title' => $title ,
'description' => $description ,
'images' => $imgBig
);
return true;
}