Добро пожаловать, Гость!
Просмотр записи
moblov создал дневник Написание граббера на php в категории Полезные коды 23 Мая 2013
Грабберами в народе называют серверные скрипты, предназначенные для получения данных с различных серверов и встраивания их в свои страницы. В инете есть куча примеров RSS-грабберов, извлекающих тексты с новостных лент, но мне лично нужен не какой-то RSS, которым я ни разу в жизни не пользовался, а полноценный скрипт, который легко настроить для извлечения любой нужной мне информации с любой из доступных в сети страниц.
Так что эта небольшая статья - как раз пример написания граббера на языке PHP.
Задача состоит, собственно, из 3 этапов.
1. Получение данных с нужного нам URL
Для этого в PHP существует несколько возможностей:
Стандартная функция fopen, служащая для открытия файла
Применять ее не очень удобно, так как нельзя контролировать время соединения, получать ответы ошибок сервера и т.д. Кроме того, она может быть запрещена на хостинге через http. Тем не менее, вот пример откуда-то. Здесь мы парсим выдачу популярного сайта bash.org:
<?
$url='http://www.bash.org.ru/best';
$file = @fopen ($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);
}
?>
Популярный вариант этого же подхода еще проще -
<?
$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 одной командой)
Грабберами в народе называют серверные скрипты, предназначенные для получения данных с различных серверов и встраивания их в свои страницы. В инете есть куча примеров RSS-грабберов, извлекающих тексты с новостных лент, но мне лично нужен не какой-то RSS, которым я ни разу в жизни не пользовался, а полноценный скрипт, который легко настроить для извлечения любой нужной мне информации с любой из доступных в сети страниц.
Так что эта небольшая статья - как раз пример написания граббера на языке PHP.
Задача состоит, собственно, из 3 этапов.
1. Получение данных с нужного нам URL
Для этого в PHP существует несколько возможностей:
Стандартная функция fopen, служащая для открытия файла
Применять ее не очень удобно, так как нельзя контролировать время соединения, получать ответы ошибок сервера и т.д. Кроме того, она может быть запрещена на хостинге через http. Тем не менее, вот пример откуда-то. Здесь мы парсим выдачу популярного сайта bash.org:
<?
$url='http://www.bash.org.ru/best';
$file = @fopen ($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);
}
?>
Популярный вариант этого же подхода еще проще -
<?
$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 одной командой)
DCMS-Social.ru - движок социальной сети, вап и веб мастерская, файло-обменник и форум.
Статистика DCMS-Social.ru: Пользователей - 14967, тем на форуме - 30292, сообщений - 298885