Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2011, 22:17   #1
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию парсинг сайта

Добрый день, я только начинаю учить php, и собственно пробую парсинг, пытаюсь распарсить какой-то интернет магазин, т.е. получить название категорий товаров, и товары которые относятся к этой категории, но у меня не получается, собственно вот ошибка:
Код HTML:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 2923 bytes) in T:\home\localhost\parce\parce.php on line 37
а вот код:

Код:
<?php
$Cat_URLS=array();
$Cat_Name=array();
	function Get_Cat_NAME_AND_URLS()
	{
		$site=file_get_contents("http://sports-nutrition.ru/");
		$site_pos=strpos($site,"<ul>");
		$site=substr($site,$site_pos);
		$site_pos=strpos($site,"</ul>");
		$site=substr($site, 0,$site_pos);
		$site=str_replace('<ul>','',$site);
		$site=str_replace('<li>','',$site);
		$site=str_replace(' - ','',$site);
		$site=str_replace('</li>','',$site);
		$site=str_replace('"','',$site);
		$i=0;
		$site=$site."#";
			while($site!='#'){
				$perem=$site;
					$pos_perem=strpos($perem,'</a>');
					$perem=substr($perem, 0,$pos_perem);
					$Cat_Name[$i]=$perem;
						$pos_catn=strpos($Cat_Name[$i],'<a href=');
						$Cat_Name[$i]=substr($Cat_Name[$i],$pos_catn);
						$pos_catn=strpos($Cat_Name[$i],">");
						$Cat_Name[$i]=substr($Cat_Name[$i], 0,$pos_catn);
						$pos_catn=strpos($Cat_Name[$i],'title=');
						$Cat_Name[$i]=substr($Cat_Name[$i],$pos_catn);
						$Cat_Name[$i]=str_replace('title=','',$Cat_Name[$i]);
					$Cat_URLS[$i]=$perem;
						$pos_curl=strpos($Cat_URLS[$i],'<a href=');
						$Cat_URLS[$i]=substr($Cat_URLS[$i],$pos_curl);
						$pos_curl=strpos($Cat_URLS[$i],'title');
						$Cat_URLS[$i]=substr($Cat_URLS[$i], 0,$pos_curl);
						$Cat_URLS[$i]=str_replace('<a href=','',$Cat_URLS[$i]);
						$Cat_URLS[$i]="http://sports-nutrition.ru/".$Cat_URLS[$i];
					$site=str_replace($perem,'',$site);
					$i++;
			}
			echo $site;
		for($a=0;$a<=$i;$a++)
		{
		echo 'Название: ',$Cat_Name[$a]," ---- ССылка: ",$Cat_URLS[$a],'<br>';
		}
	}
	 Get_Cat_NAME_AND_URLS();
?>
Если кто может, то скажите для начала как исправить ошибку, и как переделать мой код, чтоб он не походил на "быдло" код)))
CodeNOT вне форума Ответить с цитированием
Старый 21.03.2011, 09:48   #2
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,714
По умолчанию

Цитата:
Если кто может, то скажите для начала как исправить ошибку
Превышен максимальный допустимый объём памяти. 99% идёт зацикленвание в while.
Цитата:
и как переделать мой код, чтоб он не походил на "быдло" код
Так как вы делаете парсинг сейчас это тупик.
Используйте регулярные выражения.
Можно ещё соригинальничать и работать с документом как с xml, но это сложнее.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг DJ_LINZA Работа с сетью в Delphi 6 31.01.2011 10:15
Парсинг сайта AnToHa-KiLL Общие вопросы Delphi 3 30.06.2009 08:22
Требуется специалист для создания сайта со строгой аутентификацией или зашифрованного сайта. artembar Фриланс 1 01.09.2008 16:11