Грабберами в народе называют серверные скрипты, предназначенные для получения данных с различных серверов и встраивания их в свои страницы. В инете есть куча примеров RSS-грабберов, извлекающих тексты с новостных лент, но мне лично нужен не какой-то RSS, которым я ни разу в жизни не пользовался, а полноценный скрипт, который легко настроить для извлечения любой нужной мне информации с любой из доступных в сети страниц.
Так что эта небольшая статья - как раз пример написания граббера на языке PHP.
Задача состоит, собственно, из 3 этапов.
1. Получение данных с нужного нам URL
Для этого в PHP существует несколько возможностей:
Стандартная функция fopen, служащая для открытия файла
Применять ее не очень удобно, так как нельзя контролировать время соединения, получать ответы ошибок сервера и т.д. Кроме того, она может быть запрещена на хостинге через http. Тем не менее, вот пример откуда-то. Здесь мы парсим выдачу популярного сайта bash.org:
<?php
$url=\'http://www.bash.org.ru/best\';
$file = Удалён ($url, \'r\');
if ($file==false) print \'<p>Не могу открыть сайт \'.$url.\'!\';
else {
$contents = fread ($file, 100000);
$contents = preg_match_all(\'|<div>(.+)</div>|U\',$contents,$frazes);
for($i=0;$i<5;$i++){
if ($i<>5) echo \"<hr>\".$frazes[1][$i].\"rn<hr>\";
}
fclose ($file);
}
?>
Популярный вариант этого же подхода еще проще -
<?php
$file = file_get_contents(\'http://www.bash.org.ru/best\');
$file = preg_match_all(\'|<div>(.+)</div>|U\',$file,$frazes);
for($i=0;$i<11;$i++){
if ($i<>5) echo \"<hr>\".$frazes[1][$i].\"rn<hr>\";
}
?>
или же
$str=file_get_contents(\"http://google.com/\"
;
(по сути, file_get_contents - это fopen, fread, fclose одной командой)