Все доброго времени суток! Мне нужно сделать грабер с сайта http://www.photoshop-master.ru/rss_les2.php . Вот не подскажите с чего начать ? Задача только в сто , что нужно это взять с того сайта, и вывести на моём. Заранее спасибо!
http://www.google.com.ua/search?hl=ru&q=RSS+%D0%B3%D1%80%D0%B0%D0%B1%D0%B5%D1%80+%D0%BD%D0%B0+php&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&meta=
если тебе грабить новости в DataLife Engine там встроен такой модуль только без автоматизации добавки
скачал с сайта парсер, но он выводит, попробывал вывести новости с гугла, выводит не корректно, с тегами.
SimpleXML – это расширение для PHP5 устанавливаемое в него по умолчанию, представляет самый простой и элегантный способ обработки XML (соответственно и RSS) файлов. Это и наиболее предпочтительный способ, но он стал доступным только в 5 версии PHP. Тут нет ничего проще, данный код наглядно показывает как просто парсить RSS ленты средствами SimpleXML: PHP: <? $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 и привлекает. Дальше вам нужно будет только правильно распорядиться полученными данными, записать в базу или еще куда-нибудь. XML Parser Functions - это стандартные функции PHP для работы с XML доступные начиная c 4-ой версии PHP. Тоже нет ничего сложного, правда в отличие от SimpleXML совсем не элегантно. Продемонстрирую пример: PHP: <? $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: PHP: <? $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, при парсинге русского текста тремя способами описанными выше, нам на экран выводятся кракозябры. PHP: <? echo utf8_convert($str, "w"); //перекодирует $str из UTF-8 в Windows-1251 и выведет на экран { 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.
Я нашёл ешё один вариант : взял рсс ленту и зарегестрировался на http://rsslenta.ru, там мне дали ява скрипт , который выводит эту ленту у меня на сайте, но дело в том, что нужно информацию, которую выводит лента нужно как то записать в бд и уже тольуо потом выводить... вот здесь я застрял, как загнать инфу в базу