Все о парсинге RSS лент средствами PHP

Опубликованно: 06.11.2008
Теги:

Вот только сегодня закончил писать скрипт парсера RSS лент для одного постоянного заказчика и решил поделиться способами и возможностями который нам предлагает язык PHP для этого дела (парсинга RSS). Для начала давайте я скажу о том что такое вообще RSS, вдруг кто-то из вас еще не знает. Сочинять сам не буду, а просто процитирую википедию:


RSS — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п. Информация из различных источников, представленная в формате RSS, может быть собрана, обработана и представлена пользователю в удобном для него виде специальными программами-агрегаторами.


То есть это по сути XML (кто незнает что это идем в википедию и читаем), а XML как нам известно хорошо структурированный документ. Я клоню к тому что если в RSS есть открывающий тег, то должен быть и закрывающий (например: <title>Заголовок</title>), иначе это не RSS. Думаю на данном этапе суть ясна: нам нужно получить информацию заключенную между тегами. Любая RSS лента имеет заголовок заключенный между тегами <title></title> и сам текст статьи заключенный между тегами < description></description>, именно их нам и нужно спарсить.

Теперь расскажу о способах написания RSS парсера и что предлагает нам PHP для реализации.


Способ 1 – SimpleXML

SimpleXML – это расширение для PHP5 устанавливаемое в него по умолчанию, представляет самый простой и элегантный способ обработки XML (соответственно и RSS) файлов. Это и наиболее предпочтительный способ, но он стал доступным только в 5 версии PHP. Тут нет ничего проще, данный код наглядно показывает как просто парсить RSS ленты средствами SimpleXML:

<?
$url = 'rss.xml';	//адрес RSS ленты

$rss = simplexml_load_file($url);	//Интерпретирует XML-файл в объект

//цикл для обхода всей RSS ленты
foreach ($rss->channel->item as $item) {
	echo '<h1>'.$item->title.'</h1>';	//выводим на печать заголовок статьи 
	echo $item->description;	//выводим на печать текст статьи
}
?>

Данный код выведет заголовки и тексты статей из RSS ленты. Просто ведь? Этим SimpleXML и привлекает. Дальше вам нужно будет только правильно распорядиться полученными данными, записать в базу или еще куда-нибудь.

Способ 2 – XML Parser Functions

XML Parser Functions - это стандартные функции PHP для работы с XML доступные начиная c 4-ой версии PHP. Тоже нет ничего сложного, правда в отличие от SimpleXML совсем не элегантно. Продемонстрирую пример:

<?
$url = 'rss.xml';	//адрес RSS ленты
$xml = xml_parser_create();	//создаёт XML-разборщик
xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1);	//устанавливает опции XML-разборщика
xml_parse_into_struct($xml, file_get_contents($url), $element, $index);	//разбирает XML-данные в структуру массива
xml_parser_free($xml);	//освобождает XML-разборщик

$count = count($index["TITLE"])-1;	//число проходов цикла.

for ($i=0; $i < $count; $i++) {
	echo '<h1>'.$element[$index["TITLE"][$i+1]]["value"].'</h1>';		//выводим на печать заголовок статьи 
	echo $element[$index["DESCRIPTION"][$i+1]]["value"];		//выводим на печать текст статьи
}
?>

Вот таким образом мы получаем интересующие нас содержимое элементов RSS. Но тут уже нужно разобраться с массивами которые создает XML разборщик.

Способ 3 – Написать RSS парсер самому

Например я делал именно так, когда не знал про существование SimpleXML и XML Parser Functions. Приведу небольшой пример парсинга RSS обычным процедурным PHP кодом, тут за парсинг отвечает функция preg_match_all(), которая выполняет глобальный поиск шаблона в строке. Данный пример не совершенен и парсит только титлы и дескрипшены у RSS:

<?
$url = 'rss.xml';	//адрес RSS ленты

$rss = @file_get_contents($url);	//получаем содержимое RSS лент в виде одной строки

if ($rss) {	
	preg_match_all("/title>[^>]+>/", $rss, $title);		//парсим титлы
	preg_match_all("/<description>[^<]+<\/description>/", $rss, $description);		//парсим дескрипшены
	
	$count = count($title[0])-1;	//число проходов цикла.
	
	for ($i=0; $i < $count; $i++) {
		echo '<h1>'.substr($title[0][$i+1], 6, -8).'</h1>';		//выводим на печать заголовок статьи 
		echo substr($description[0][$i], 13, -14);		//выводим на печать текст статьи
	}
} else {
	echo '<font color="red">Ошибка парсинга '.$url.'</font>';	//выводим ошибку если file_get_contents() вернула false
}
?>

Таким же способом можно и отпарсить остальные элементы RSS ленты, главное написать правильно регулярку.


На этих трех способах мы и остановимся, еще есть наверняка множество сторонних скриптов и классов в PHP для парсинга XML, например magpieRSS у которого проблемы с кодировкой при парсинге и решить ее у меня не получилось, да собственно не очень то и хотелось, когда есть SimpleXML и XML Parser Functions. Вот кстати о проблемах с кодировкой мы сейчас и поговорим…

Проблемы с кодировкой

RSS ленты как правило находятся в кодировке UTF-8, при парсинге русского текста тремя способами описанными выше, нам на экран выводятся кракозябры. Все потому, что тест к нам приходит в кодировке UTF-8. Для того что бы вывести нормальные РУССКИЕ буквы нужно перекодировать спарсеный текст из кодировки UTF-8 в Windows-1251. Для этих целей в PHP существует функция iconv(), но она доступна не на всех серверах и чтобы избежать дальнейших проблем с вашим RSS парсером советую использовать самописную функцию перекодировки. Вникать в тонкости кодировок и разбираться как из одной кодировки получается другая думаю вам не хочется, так же не хотелось и мне. Немного погуглив я нашел замечательную функцию перекодировки из UTF-8 в Windows-1251 и обратно, предоставляет ее некий товарищ E64F. Возможно конечно он тоже ее где-то слямзил, но это не так важно, важно то что она мне очень понравилась по сравнению с другими нагуглеными функциями. Выкладываю функцию и пример ее использования:

<?
echo utf8_convert($str, "w");	//перекодирует $str из UTF-8 в Windows-1251 и выведет на экран

function utf8_convert($str, $type)
{
   static $conv = '';
   if (!is_array($conv))
   {
      $conv = array();
      for ($x=128; $x <= 143; $x++)
      {
         $conv['utf'][] = chr(209) . chr($x);
         $conv['win'][] = chr($x + 112);
      }
      for ($x=144; $x<= 191; $x++)
      {
         $conv['utf'][] = chr(208) . chr($x);
         $conv['win'][] = chr($x + 48);
      }
      $conv['utf'][] = chr(208) . chr(129);
      $conv['win'][] = chr(168);
      $conv['utf'][] = chr(209) . chr(145);
      $conv['win'][] = chr(184);
   }
   if ($type == 'w')
   {
      return str_replace($conv['utf'], $conv['win'], $str);
   }
   elseif ($type == 'u')
   {
      return str_replace($conv['win'], $conv['utf'], $str);
   }
   else
   {
      return $str;
   }
}
?>

Функция utf8_convert() принимает 2 параметра: $str – наша строка которую нужно перекодировать и $type – в какую кодировку нужно кодировать (“w” – из utf в win, “u” – из win в utf). Как это применить к нашим 3-м способам парсинга RSS думаю разберетесь, если хоть немного знаете PHP.


Вот на этом пожалуй и закончим. Удачного парсинга ;)!

 

Комментарии

06.11.2008

Отвратительно, вот такие вот скрипты потом и висят на сайтах, а нам потом копаться в этом дерьме когда очередной заказчик захочет модернизировать сайт который ему написали такие "писаки"

06.11.2008

Оу оу оу Vladson, притормозьте, вы вообще о чем? Что вы называете дерьмом? Копаться... И как долго вы обычно копаетесь в ~10 строках кода? Поясните ваше высказывание...

15.11.2008

Премного благодарна вам. Ваш сайт это прекрасный повод найти приятных и образованных людей, способных к конструктивным обсуждениям и критике. :)

16.11.2008

Как говорится.. Не дать не взять, зачётная статья!

17.11.2008

Наверное Vladson испугался рег. выражений )

17.11.2008

Уважаемый автор!

Исправьте пожалуйста в последнем листинге echo на function.

С уважением "некий товарищь" E64F ))

17.11.2008

Спасибо большое "некий товарищь" E64F =)!
Делаешь, стараешься блин и все равно проглядел ошибочку.

18.11.2008

Спасибо за статью, всегда рада почитать вас!

19.11.2008

Люблю почитать подобное

20.11.2008

Спасибо за Ваш труд!!

21.11.2008

Полностью согласна!

21.11.2008

Это уже интересней.

22.11.2008

Подскажите на счет последнего.
Я в пхп вообще ноль, но просто ОЧЕНЬ нужно сделать. Куда нужно вставить код функции utf8_convert(), чтобы русские буквы нормально отображались. Или нужно отдельный файл создавать с кодом этой функции. Объясните плз, очень-очень нужно. Можно на е-мэйл. Буду очень признателен.

22.11.2008

Отличная статья, спасибо!

22.11.2008

Сергей все содержимое последнего листинга вставьте в один файл.
function utf8_convert($str, $type) - все что ниже этой строчки - сама функция.
echo utf8_convert($str, "w"); - эта строчка выводит на экран резульат работы функции, где $str - ваша строчка которую необходимо перекодировать, "w" - параметр который определяет из какой кодировки в какую конвертить ("w" - из utf в win, "u" - из win в utf)

22.11.2008

не отображаются картинки почему-то( это только у меня так?

22.11.2008

ПОДСКАЖИТЕ, что нужно делать с этим кодом. Т.е. я в пхп ноль, но думаю, что код нужно сохранит в файл пхп, а с другой страницы (где желаем выводить парсерные новости), что-то типа иклуд. Помогите плз.
[php]
// кешируем RSS файлик
// место куда пишем файлик кэша
$filename = $_SERVER['DOCUMENT_ROOT']."/cache/phpnews.rss";

// проверяем насколько старый файлик
$modif=time()-@filemtime ("$filename");

// если в кэше нет файла или он слишком старый - обновляем
if(!file_exists($filename) || $modif>"3600")
{
$rss = file_get_contents("http://www.php.net/news.rss");

$handle = fopen ("$filename", "w");

fwrite($handle, $rss);

fclose($handle);
}

// читаем файлик с помощью Simple XML
$RSS = simplexml_load_file($filename);

// для любопытных что жк мы там получили :-)
//VAR_DUMP($RSS);

foreach ($RSS->channel->item as $item) {

// при надобности перекодируем полученные данные в нужную кодировку
//$item->description = iconv("UTF-8","WINDOWS-1251",$item->description);
//$item->title = iconv("UTF-8","WINDOWS-1251",$item->title);

//формируем ссылку и выводим данные
echo "link."\">".$item->title."$item->description";
}
[/php]

22.11.2008

полезная статья, пригодилась :-)

22.11.2008

Сергей у вас iconv() не срабатывает или что? Функция перекодировки от товарища E64F нужна если у вас iconv() не срабатывает. Я не свовсем понял какой результат вы хотите получить...

23.11.2008

К предыдущему комментатору: мне кажется, это уже лишнее здесь

24.11.2008

Распечатываю… на стенку в самое видное место!!!

25.11.2008

Ув. Wincert, подскажите, а нет ли возможности доделать SimpleXML (Способ 1) так, чтобы можно было ограничить количество выводимых новостей, к примеру, чтоб была возможность задать вывод 1 новости.
Спасибо!

25.11.2008

Если Вас не затруднит, что дописать, чтобы сделать такое?
Спасибо!

25.11.2008

Игорь советую вам разобраться все таки с тем как получать содержимое XML элементов средствами SimpleXML, проще и элегантнее способа я не знаю. Если лень с этим разбираться, то в конце цикла foreach поставьте exit();, но это "гуманный" способ решения вашего вопроса.

26.11.2008

Кто знает как парсить вот такие штуки с rss

27.11.2008

Жек регулярные выржения вам нужно изучать, вот тут отличный мануал по регуляркам - http://omsk777.ru/all.php?act=posix

27.11.2008

Спасибо, пойду пробовать установить парсер. Самое главное, что он простой и с кэшированием.

05.12.2008

Интересно, я даже и недумала об этом…

05.12.2008

Не зачет!

06.12.2008

Всегда читаю ваши посты с наслаждением. Всегда интересно, что напишите на этот раз

06.12.2008

Неоднократно доводилось читать подобные посты на англоязычных блогах, но это не значит что ваш пост мне не понравился

07.12.2008

У вас RSS в кривой кодировке!

07.12.2008

UNJohn можно подробнее что и где криво?

08.12.2008

Познавательно! Все очень понятно и грамотно. Спасибо автору!

10.12.2008

Интересно тут у вас :)

12.12.2008

iconv у меня не работает на сервере, хотя PHP 5. В общем не знает он такой функции (((

Попробовал код от E64F. Ну не работает он, хоть убейте. Даже специально ему строку в UTF-8 подсунул (к $str присвоил строку в UTF-8) и поставил $type = w (хотя ставил и "w" и "u"), все равно выводит utf-8. Часа 2 убил, так он мне ничего и не перекодировал. В браузере ставлю кодировка UTF-8 - все читается... значит не сработал...

12.12.2008

HTCs710 Я когда-то с этим тоже часами сидел... Терпение и труд... Специально перепроверил работу функции, все работает, видать вы чего-то неправильно делаете.

13.12.2008

Это можно заюзать для разработки самонаполняющегося сайта, или в seo разработках, типо брать контент с лент новостей для заполнения доров...

19.12.2008

Хорошо пишете. Я бы конечно некоторые моменты оспорила, ну да ладно.

19.12.2008

Спасибочки! Буду теперь заходить на этот блог почаще!

19.12.2008

Zoossyzeproke оспорьте, я только за ).

VDWilliam можно поподробнее что и где криво?

19.12.2008

Люблю почитать подобное

19.12.2008

Спасибо за информацию

19.12.2008

Действительно классная темка.

19.12.2008

Урааа... давно искал, спасибо большое ;)

21.12.2008

интересно, а почему вы так давно новые посты не пишете? Что-то случилось:(

21.12.2008

Лилия времени нету совсем, в этом году еще один пост запланирован у меня, как освобожусь так сразу напишу.

22.12.2008

вау дайте две

22.12.2008

Хотелось бы поговорить насчёт рекламы в вашем блоге.

22.12.2008
23.12.2008

Спасибо, автор! Второй способ мне очень приглянулся!

26.12.2008

Огромное СПАСИБО! Этот блог - супер!!!

27.12.2008

очень интересно :)

28.12.2008

Понравился ваш сайт

28.12.2008

Хорошая статья, грамотная. Я свой первый парсер вообще по substr_count(часть кода,обработчик) делал, лишь через год узнал про preg_match и вообще xml_parse :)

Защиту от спам-комментов я бы усилил

16.01.2009

а я чего - то не понимаю! ты выкладываешь код программы, которую ты писал на заказ? а не боишься что получьшь на орехи?

16.01.2009

Нече скриптик попробывал зачетно..

16.01.2009

Денис я не выкладывал код программы котоую писал на заказ. Здесь лишь описанны способы парсинга RSS лент, с помощью одного из которых я писал скрипт на заказ.

21.01.2009

Чувак, мощно написал. Мне понравилось.

29.01.2009

Вопрос по первому варианту.
В случае если в ленте используют теги типа ...
то конструкция вида
echo $item->full-text
будет воспринята как разница между $item->full и константой text и в итоге на вывод отправит 0 как быть

30.01.2009

Гость, не использовать теги с "-", или сделать это с помощью способа 2 или 3.

14.02.2009

у меня тянет только часть текста. есть подозрение что существует какое то ограничение в 255 чимволов. не в курсе?

14.02.2009

Значит в ленте 255 символов, ограничений там нет.

16.02.2009

А как сделать что бы "Способ 1 – SimpleXML" парсил не только title и description, но и картинки с сайтов?

16.02.2009

SimpleXML парсит не сайты, а XML файлы.

16.02.2009

http://kino.ukr.net/i/news.xml - как отсюда парсить на SimpleXML текст(xml) вместе с картинками?

17.02.2009

При помощи SimpleXML никак, тут придется самому писать функцию парсинга.

05.03.2009

Привет, жив? А я сам парсер себе писал, что бы еще можно было картинки выдернуть из RSSки в случае надобности... =)

05.03.2009

Nick Denry привет! Конечно жив ), а ты куда пропал?

10.03.2009

Отличная статья, спасибо. Собрался было подписать Ваш блог, но обнаружил, что ссылка на Ваш фид устарела, т.к. Вы его видимо переместили:

В счетчике RSS вверху справа этой страницы:
http://feeds.feedburner.com/Wincert

А фид на самом деле тут:
http://feeds2.feedburner.com/Wincert

Еще раз спасибо.

28.03.2009

интересно, только немного не то, что ищу, но и на том спасибо

12.04.2009

Очень интересно пишете, достойно внимания, тема развернута полностью, заходите в гости)!

17.04.2009

я не мастер но второй способ парса пришлось переделать так
$count = count($index["TITLE"]); //число проходов цикла.

for ($i=0; $i < $count; $i++) {
echo ''.$element[$index["TITLE"][$i+1]]["value"].''.''; //выводим на печать заголовок статьи
echo ''.$element[$index["DESCRIPTION"][$i]]["value"].''; //выводим на печать текст статьи
}
может из за того что руки кривые но у меня выдовал сначало дескрипшн а потом титл, т.е. получался дискрипшн а потом шел заголовок для него :)

21.04.2009

Спасибо за интересный материал

22.04.2009

Спасибо за сайт, так много информации подчерпнула!

24.04.2009

Спасибо, помогло... :)

24.04.2009

В первом H1 выдает название сайта, как распарсивать только по тем тегам которые мне нужны?

25.04.2009

Антон
Я так понимаю ты говоришь про второй или третий способ. RSS по структуре разные бывают, поэтому эти споособы оказались не совсем универсальные. Как будет время я доработаю их.

02.05.2009

Пост закончился на самом интересном месте, RSS выводится прекрасно, но в UTF и ничего сделать не могу, поддержки iconv нет, что куда ставить?
Может быть кто-то действительно поможет с перекодировкой?

03.05.2009

Mux@
Почитайте про функции в PHP, тогда все вопросы отпадут.

18.05.2009

дерьмовый код перекодировщика! учитесь юзать iconv()!!!

20.05.2009

Гость
Умник... Выложи не дерьмовый. Если простой хостинг (на котором нет доступа к настройкам сервера) и iconv() не настроен, то учиться нечему и придется пользоваться этой ф-цией.

25.05.2009

Автор, огромное спасибо!
Возникла необходимость парсить rss-ленту.
Нашёл ваш сайт и в две минуты всё заработало! Воспользовался первым вариантом с SimpleXML. Очень круто!

27.05.2009

Спасибо большое. Парсил раньше рсс другими методами (больше похоже на 3-й). При попмощи Вашей статьи - упростил код! РСС-парсинг наше всё :)

31.05.2009

Набрали вы спама огромную кучу

18.06.2009

Добавляю в избранное. Хотя пришел по ссылке случайно. Будет время навяжу дискус.

01.07.2009

очень интересная статья, а вот интересно можно ли розьеденить все новости что бы вносить в базу на пример по одной, а то так выйдет что вноситься полностью вся доступная лента(10-15заголовков) для первого примера?

01.07.2009

Serg
Не совсем понял вопроса... В примерах каждая запись из ленты выведется отдельно от другой вместе с заголовком, они в цикле выводятся. Если вы знакомы с массивами, то вам не составит труда разобраться что там к чему.

29.07.2009

Полностью согласен с большинством - статья просто класс !!! Спасибо автору.
Вот бы еще немного бы разживали про парсинг картинок. Думаю многим бы здесь пригодилось бы.

06.08.2009

Метод довольно неплохой, хотя и трудоемкий. Но... каждый парсит как может.

08.08.2009

Wincert, большое человеческое. Использовал Ваш второй способ вместе с функцией перекодировки. Небольшой вопрос: при перекодировке символ № отображается неправильно, как от этого можно избавится?

08.08.2009

SunRaider
str_replace("*", "№", $str);
Вместо звездочки нужно поставить не перекодированный символ №

10.08.2009

Wincert
И вновь спасибо. Если не возражаете, еще два вопроса.

1) Как быть если неправильно отображаются кавычки? У меня вместо кавычек выводятся знаки вопроса.
2) Можно ли сделать тайтл ссылкой на тот сайт откуда берется лента?

Заранее спасибо.

11.08.2009

SunRaider
Честно говоря возражаю, на первый вопрос смотрите ответ выше.
2) echo '<h1><a href=".$element[$index["LINK"][$i+1]]["value"].
">'.$element[$index["TITLE"][$i+1]]["value"].'</a></h1>';

13.08.2009

Wincert
С первым вопросом такое решение помогло потому что там мне надо было заменить серию символов, которые в нормальном тексте никогда не встретятся. А если я напишу str_replace(); для знака вопроса, то будут заменены вообще все вопросы в строке. Плюс кавычки могут быть левой и правой. Т.е. мне надо искать первое и второе нахождение символа в тексте?

13.08.2009

ЗЫ. Спасибо за ссылку.

13.08.2009

SunRaider
Зачем вопрос туда вставлять, выясни как пишутся нужные тебе символы в другой кодировке и их заменяй.

25.08.2009

Сорри, а почему он игнорирует внешние ссылки?

Адрес по типу: http://bash.org.ru/rss/index.xml выдает:

Warning: file_get_contents(http://bash.org.ru/rss/index.xml) [function.file-get-contents]: failed to open stream: Connection refused.

02.09.2009

Wincert, не в обиду, но почисти комменты от спама! Сообщения подобного рода: "Спасибо за сайт, так много информации подчерпнула!" с ссылкой на какой-нибудь говносайта удаляй сразу, они рассылаются почти автоматом. Имидж твоему блогу портит серьезно.

06.09.2009

Способ 1 – SimpleXML мне очень понравился, вот только одна проблема, как мне прописать стили к выводимым заголовкам и записям, в каком месте кода нужно указать на них

06.09.2009

да и еще извени сразу забыл спрасить а какой код нужно добавить к первому способу что бы еще выводила картинку из записи

06.09.2009

vanicon
Стили указываются так же как обычно.
Объяснять азы я тут не буду.

>>какой код нужно добавить к первому способу что бы еще выводила картинку
Правильный! Писать за тебя я его не буду.

10.09.2009

Здравствуйте, функция перекодировки очень интересная. но всё же портит спецсимволы, поймал те же проблемы с ковычками и знаком вопроса и т.д. ребята помогите доработать str_replace("В«", "«", $str);
str_replace("В»", "»", $str); не катит т.к. и в правду заменит что нибудь не то..

13.09.2009

Как можно распоточить рсс-ленты? То есть несколько лент на пхп-поток пустить.

15.09.2009

А можно как-то выводить только ньюсы содержащие ключевое слово в теле или в заголовке?

23.09.2009

Если распишите в примере - "Как это применить к нашим 3-м способам парсинга RSS думаю разберетесь, если хоть немного знаете PHP."

Положу 1$ на мобилку/вебмани ))

18.11.2009

Спасибо за простое решение. Тем более, мне анлоязычный rss выдрать надо было, и с кодировкой возни никакой.
А спама тут и вправду навалили.

25.11.2009

А мне статья понравилась, странно, что люди не отличают обзорный код от проффесионального.
Берем код с этой статьи и правим под себя его профессионально, как хотим.
Автору спасибо. Не ошибаеться тот кто нефига не делает.

07.12.2009

бесплатный хостинг с поддержкой хостинг сайтов hosting.miheeff.ru платный хостинг http://hosting.miheeff.ru хостинг Стоимость хостинг тарифа VSH-A составляет 100 рублей в месяц бесплатный хостинг с поддержкой

13.12.2009

а можно узнать как сделать простейшую запись в базу? а то как брать понятно а как положить то?

13.01.2010

Спасибо, освоил чтение rss за три минуты, выбрав первый способ :)
Думал будет сложнее.

01.02.2010

Хорошая статья, грамотная. Я свой первый парсер вообще по substr_count(часть кода,обработчик) делал, лишь через год узнал про preg_match и вообще xml_parse :)

Защиту от спам-комментов я бы усилил

07.02.2010

а есть готовый скрипт парсинга какого нидь новостного ресурса? интересно посмотреть в действии теорию.

09.02.2010

Спасибо за статью!

1. Возможно ли парсить не всю ленту, а только несколько последних сообщений?
Очень уж долго выполняется скрипт, если необходимо просматривать одновременно 5-10 лент.

2. Не зависнет ли скрипт, если отключится сама лента?

09.02.2010

devul
Готовый скрипт все равно на твоём ресурсе работать не будет, так как надо таблицу для приёма новостей создавать и таблицу парсируемых лент.

09.02.2010

Итог парсирования десяти лент и вывод новостей только о Динамо, можно посмотреть нажав "Олег".
http://www.fandynamo.ru/news/
Сам скрипт парсинга запихал в CRON

25.02.2010

спасибо) полезно)

08.03.2010

Отличная статья. Но вот вопрос возник-что в первом варианте кода нужно добавить чтобы парсил не все новости-щас их выдает по 10 штук, а например ограничить 5 или вообще 2-3 новостями.
Подскажите плиз
Спасибо

10.03.2010

Спасибо, доходчиво

12.03.2010

ммм... есть вопрос а почему не iconv ?

16.03.2010

спасибо, статья хоть и старенькая, но тема парсеров актуальна и сейчас.

19.03.2010

Здравствуйте! Возможно Вы мне поможете. Есть RSS-файл http://www.newizv.ru/rss/daily.xml, доступен, нормально читается. PHP-функция simplexml_load_string отрабатывает как надо, а xml_parse_into_struct (можно ей не пользоваться, но тогда надо весь разбор заново переписать) виснет именно на этом файле наглухо. В обычном редакторе файл смотрел - ничего особенного. Получается формат правильный, что-то не то с содержанием, но вот что именно и как с этим бороться?

25.03.2010

Думал с парсингом разбираться
и наткнулся на этот сайт
удачно

25.03.2010

Сегодня обязательно заморочусь с парсингом. Я так понял именно на нем делают кроспостинг.

02.04.2010

Методы хорошие - а почему как то было забыто банальный DOM Document?
З.Ы. наткнулся на ваш сайт и очень понравилась форма вывода комента!!

10.04.2010

Очень доступно все о парсинге! спасибо

14.04.2010

Да уж, теперь разбираться и разбираться. Но все равно - спасибо за такой пост!

14.04.2010

Электроинструмент makita, перфораторы bosch,
http://stroytexnik.ru
ремонт в кратчайшие сроки с инструментом и оснасткой makita
http://serfibux.ru
http://free-many.ru
http://turnadoo.ru
шуруповерты aeg skil dewalt лобзики и
http://polyakow.ru
шлифмашинки.
http://magazin-elok.ru

21.04.2010

Переехал на хостинг с пхп 5. Старый парсер не заработал. Включил гугл, нашел эту статью. За десять минут сделал новый парсер новостей для своего сайта www.unecha.net Спасибо.

23.04.2010

Как уже было сказано несколькими постами выше есть как минимум ещё один способ парсинга - с использованием DOMDocument. Пример реализации можно посмотреть здесь - http://www.michael-smirnov.ru/

01.05.2010

Подскажите, а как сделать, чтобы заголовок новости выводился как ссылка?

01.05.2010

2Alexey: Походу, написать еще один парсер ) --> парсер парсящий результаты парсинга!

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
Image CAPTCHA