помогите доработать граббер

Статус
В этой теме нельзя размещать новые ответы.

Altair-Z

Создатель
Регистрация
10 Май 2010
Сообщения
30
Реакции
1
Ситуация:
Есть элементарный грабер:
PHP:
<?php
$url = "http://урл_откуда_грабить";
$unique_start = "<h3>";
$unique_end = "</h3>";
function weather($url,
$unique_start, $unique_end);
{
$code = file_get_contents($url);
preg_match('/'.preg_quote($unique_start, ('/').'(.*)'.preg_quote($unique_end, '/').'/Us', $code, $match);
return $match[1];
}
echo weather($url, $unique_start, $unique_end);
?>
где урл - страница а Н3 и /Н3 теги между которыми читать
вопрос - как сделать так чтобы скрипт граббил с нескольких урлов (до 5000) вида Site.ru/1.html site.ru/2.html и дальше?
Зараннее благодарен
 
есть специальные теги PHP - которыми нужно обрамлять пхп-шный код, дабы его можно было легко читать

(PHP)
здесб пхп - код, и скобки квадратные
(/PHP)

вы используете ф-цию Для просмотра ссылки Войди или Зарегистрируйся, а есть еще Для просмотра ссылки Войди или Зарегистрируйся - ею и воспользуйтесь
 
благодарю, но я не совсем понял описание по ссылке. Можно конкретнее?
Дело в том , что после граббинга вместо echo каждая страница будет записываться в базу данных.
 
Закидываешь в текстовый файл список урлов, потом все эти ссылки загоняешь в массив и с помощью цикла перебираешь все страницы
 
Закидываешь в текстовый файл список урлов, потом все эти ссылки загоняешь в массив и с помощью цикла перебираешь все страницы
А можно сделать так чтобы через форму ввести site.ru а скрипт сам переберал site.ru/1.html site.ru/2.html и т.д.?
Если можно, подскажите, как это реализовать.
 
А можно сделать так чтобы через форму ввести site.ru а скрипт сам переберал site.ru/1.html site.ru/2.html и т.д.?
Если можно, подскажите, как это реализовать.
Все страницы будут по типу site.ru/1.html, site.ru/2.html, site.ru/3.html?
Опять же с помощью цикла, просто подставляй цифру.
А если хочешь спарсить ссылки со страницы, то тут уже больше нюансов, например как внешние ссылки и тд.
 
да, все страницы такого вида.
Нет, на страницах будет только текст. Никаких ссылок

мысль я уловил, но одна проблема - я немного понимаю в десктопных языках, а в РНР я полный нуб)
вы не могли бы код приводить?
 
да, все страницы такого вида.
Нет, на страницах будет только текст. Никаких ссылок
мысль я уловил, но одна проблема - я немного понимаю в десктопных языках, а в РНР я полный нуб)
вы не могли бы код приводить?
Вот
PHP:
define('MAX_STR', 5000);
define('MAIN_URL', 'http://site.ru');
$unique_start = "<h3>"; 
$unique_end = "</h3>"; 
for($i=1; $i<=MAX_STR; ++$i){
	// http://site.ru/1.html .. http://site.ru/5000.html
	$url =  MAIN_URL.'/'.$i.'.html';
	$content = weather($url, $unique_start, $unique_end);
	// тут надо что-то делать с полученными данными
}
function weather($url, $unique_start, $unique_end){ 
	$code = file_get_contents($url); 
	preg_match('/'.preg_quote($unique_start, '/').'(.*)'.preg_quote($unique_end, '/').'/Us', $code, $match); 
	return $match[1]; 
}
Но, если шаблон не подойдёт- weather ничего не вернёт.
 
PHP:
<?php
$ot = '<div class="sectionbox">';// ОТ
$do = '</div>'; //ДО

$c = 4; //Количество страниц

for( $i = 1; $i <= $c; $i++ ) {
		$html = file_get_contents( 'http://inform-seo.ru/php/4-' . $i . '.html' );
		preg_match_all( '|' . $ot . '(.+?)' . $do . '|is', $html, $txt );
		echo $txt[1][0];
} 

?>

Altair-Z, универсальных парсеров не существует. Всё равно нужно под каждый сайт отдельно настраивать- и регулярки, и вывод, и сохранение.

А парсер попробуйте запустить в том виде как он есть =)) Хорошее пособие. =)
А так бы дали ссылку на ресурс, тут программёров много, кто-как но поможем.

Добавлено через 2 минуты
Гы.. Не успел... =)) KillDead, ща он с дефайнами вообще умрёт... =))
 
KillDead
спасибо, работает, за исключением одного.
Можно как-то кроме изменения значения в дефайне сделать так чтобы если страниц меньше 5000 он не выплевывал ошибки?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху