@maxsharun

Почему не парсится фрагмент сайта?

Пишу функцию для быстрого добавления товаров по ссылке в ручном режиме. Пример ссылки
https://www.sima-land.ru/2742033/nabor-bumagi-dlya...

Нужно спарсить характеристики. Собственно charvals, charnames и даже отдельно manufacture через функцию не парсятся. Проверял регулярное выражение здесь: https://regex101.com/ . Все регулярки рабочие (там). Но функция не работает. Вот, результат работы у меня: xn----7sbbrc1bbojpqdj3d8de.xn--p1ai/api/parse?url=...

Подскажите, в чем может быть причина и как мне лучше спарсить эти характеристики? Спасибо

Все работает

function simaland($url) {
		
			$out = array();
			$out = file_get_contents($url);
			
			
			if(preg_match_all('/<h1 itemprop="name">(.*?)<\/h1>/', $out, $pname))
			{
				$return['pname'] = $pname[1][0];
			}
			
			if(preg_match_all('/<meta itemprop="price" content="(.*?)">/', $out, $price))
			{
				$return['cost_price'] = $price[1][0];
			}
			
			if(preg_match_all('/<meta itemprop="priceCurrency" content="(.*?)">/', $out, $currency))
			{
				$return['currency'] = $currency[1][0];
			}
			
			if(preg_match_all('/<span class="b-properties__value">по (.*?) шт<\/span>/', $out, $min_order))
			{
				$return['min_order'] = $min_order[1][0];
			}
			
			if(preg_match_all('/data-large="(.*?)"/', $out, $images))
			{
				$return['images'] = $images[1];
			}
			
			$return['manufacture'] =array();
			if(preg_match_all('/<div class="_1KJXA">Торговая марка<\/div><\/div><div class="_3MM0w"><a href="[^>]+?[^>]+" target="_self" class="[^>]+?[^>]+"><span class="[^>]+?[^>]+">(.*?)<\/span><\/a>/im', $out, $mnf))
			{
				$return['manufacture'] = $mnf[1];
			}
			
			$return['charnames'] =array();
			if(preg_match_all('/<div class="_1KJXA">(.*?)<\/div>/m', $out, $charnames))
			{
				$return['charnames'] = $charnames[1];
			}
			
			$return['charvars'] =array();
			if(preg_match_all('/<div class="_1KJXA">(.*?)<\/div>/m', $out, $charvars))
			{
				$return['charvars'] = $charvars[1];
			} 
			
			
			
			if(preg_match_all('/<a class="link link_dark-blue no-visited popup_positioner" href="[^>]+?[^>]+">(.*?)<\/a>/', $out, $categories))
			{
				$return['categories'] = $categories[1];
			}
			
			
			return $return;
		
		}
  • Вопрос задан
  • 175 просмотров
Решения вопроса 2
@AaAAxzz
А что означает в ваших регулярных выражениях часть с class="_1KJXA". Странное именование
Ответ написан
@maxsharun Автор вопроса
Если Вы откроете ссылку SIMA-LAND (откуда я получаю данные), то увидите там теги с такими классами. Собственно мне надо выдернуть название характеристик и их значения. Набор характеристик у разных товаров разный
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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