PDA

Просмотр полной версии : На счёт ленты rss


гейлордфакерЪ
12.09.2008, 13:57
Думаю что правильно выбрал раздел для темы

вобщем такая проблема, у меня комфорт чат в локалке
под него написан бот который читает файл default.xml так вот вопрос как скачать с rss канала .xml файл
а именно мне нужен http://img.lenta.ru/r/EX/import.rss вот этот канал ну или какой либо другой новосной сайт с мировыми новостями.
Кто поможет "+++++" в репу
заранее спасибо.

BlackSun
12.09.2008, 14:06
system('wget http://img.lenta.ru/r/EX/import.rss --output-document default.xml');

cash$$$
12.09.2008, 14:44
Канал RSS:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="0.92">
<channel>
<title>// титл</title>
<link>// ссылка </link>
<language>en</language>
<item>
<title>//титл</title>
<description>
//описание
</description>
<link>// ссылка</link>
</item>
<item>
<title>// титл</title>
<description>………</description>

<link>// ссылка</link>
</item>
</channel>
</rss>

Делаем страницу PHP, которая форматирует каждый RSS канал как HTML.

<?php // Загрузим и проанализируем XML-document ?>
<html xml:lang="en" lang="en">
<head>
<title><?php // Заголовок будет читаться из RSS ?></title>
</head>
<body>

<h1><?php // Заголовок снова будет читаться из RSS ?></h1>

<?php
// Здесь мы поместим цикл, чтобы включить заголвок каждого элемента и описание
?>

</body>
</html>

Полная программа считывания PHP RSS:

<?php // Load and parse the XML document
$rss = simplexml_load_file('http://partners.userland.com/nytRss/nytHomepage.xml');
$title = $rss->channel->title;
?>
<html xml:lang="en" lang="en">
<head>
<title><?php echo $title; ?></title>
</head>
<body>

<h1><?php echo $title; ?></h1>

<?php
// Здесь мы поместим цикл, чтобы включить заголовок элемента и описание
foreach ($rss->channel->item as $item) {
echo "<h2><a href='". $item->link. "'>". $item->title. "</a></h2>";
echo "<p>". $item->description. "</p>";
}
?>

</body>
</html>

Winst0n
12.09.2008, 17:23
cash$$$, последний скрипт который ты написал, будет считывать rss с нужного мне сайта !? я так понял)
у меня ошибка вылазит

Fatal error: Call to undefined function simplexml_load_file() in /home/winston/data/www/мой домен/rss.php on line 2

cash$$$
12.09.2008, 17:50
cash$$$, последний скрипт который ты написал, будет считывать rss с нужного мне сайта !? я так понял)
у меня ошибка вылазит

Fatal error: Call to undefined function simplexml_load_file() in /home/winston/data/www/мой домен/rss.php on line 2

Не все каналы RSS так хорошо сформированы, как это должно быть. Поэтому для исправления ошибки, попробуй так:

<?php
$rss = simplexml_load_file('//ссылка на rss');
if ($rss) {
foreach ($rss->xpath('//title') as $title) {
echo "<h2>". $title. "</h2>";
}
}
else {
echo "Упс! Ввод деформирован!";
}
?>

Другая распространенная ошибка случается, когда документ хорошо сформатирован, но не содержит те элементы, которые нужно найти. Происходит, например, с таким выражением $doc->rss->channel->item->title, когда элементная группа не имеет заголовка. Самый простой подход – всегда обращаться с возвращаемым функцией значением как с массивом данных и заключать его в цикл. Если знать, что первый элемент в документе, даже если там имеется больше чем один, то можно запросить его через индекс, начинающийся с нуля. Например, для запроса заголовка первой группы элементов, можно написать:

$doc->rss->channel->item[0]->title[0]

Если первая группа элементов отсутствует, или не имеет названия, она рассматривается так же, как и любой другой, находящийся за установленными рамками индекс, в массиве PHP. То есть результат равен нулю, который превращается в пустую строку.

Распознавание и отклонение неожиданных форматов, с которыми ты не готов работать, обычно является проверкой на правильность парсера XML. SimpleXML не может проверить относительно шаблона DTD (DTD) или схемы данных. Он проверяет только на формальную правильность.

Winst0n
12.09.2008, 18:09
все таже ощибка... к моему сожалению пхп вапше незнаю.... только элеметарные веши, как движок устоновит и тд :)

гейлордфакерЪ
13.09.2008, 09:08
всем спасибо за помощь
ставлю "+" как и обещял

nerezus
13.09.2008, 09:40
все таже ощибка... к моему сожалению пхп вапше незнаю.... только элеметарные веши, как движок устоновит и тд Виноват одмин твоего хостинга. Пусть модуль доставит.

гейлордфакерЪ
14.09.2008, 07:59
кстати сел основательно
выудил
http://img.lenta.ru/r/EX/import.xml
неудобство в том только что нада написать скрипт чтоб постоянно выкачивал данный файл в 8 00 утра и заменял старый на новый

NApoleonchik
14.09.2008, 10:55
спасибо, тоже было интересно

Zabuldon
17.09.2008, 04:08
кстати сел основательно
выудил
http://img.lenta.ru/r/EX/import.xml
неудобство в том только что нада написать скрипт чтоб постоянно выкачивал данный файл в 8 00 утра и заменял старый на новый
а почему не сделать демона который быы висел с таймлимом 0 и ровно в 8 не выкачивал те скрипт?

Helios
17.09.2008, 10:47
кстати сел основательно
выудил
http://img.lenta.ru/r/EX/import.xml
неудобство в том только что нада написать скрипт чтоб постоянно выкачивал данный файл в 8 00 утра и заменял старый на новый

а почему не сделать демона который быы висел с таймлимом 0 и ровно в 8 не выкачивал те скрипт?

Потому, что изобретать велосипед - дело неблагодарное. Умные люди придумали для этих целей CRON. Чтобы применять - коннектишься по SSH к своему серверу и пишешь:

crontab -e


Откроется текстовый редактор (скорее всего VI), в котором нужно дописать новую строку:

0 0 * * * /usr/bin/php /home/path/to/script.php


После этого сохраняем и закрываем.
Теперь скрипт будет запускаться каждый день в 0:00