Просмотр полной версии : На счёт ленты 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');
Канал 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>
cash$$$, последний скрипт который ты написал, будет считывать rss с нужного мне сайта !? я так понял)
у меня ошибка вылазит
Fatal error: Call to undefined function simplexml_load_file() in /home/winston/data/www/мой домен/rss.php on line 2
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) или схемы данных. Он проверяет только на формальную правильность.
все таже ощибка... к моему сожалению пхп вапше незнаю.... только элеметарные веши, как движок устоновит и тд :)
гейлордфакерЪ
13.09.2008, 09:08
всем спасибо за помощь
ставлю "+" как и обещял
все таже ощибка... к моему сожалению пхп вапше незнаю.... только элеметарные веши, как движок устоновит и тд Виноват одмин твоего хостинга. Пусть модуль доставит.
гейлордфакерЪ
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 не выкачивал те скрипт?
кстати сел основательно
выудил
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
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot