Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг RSS 
:(
    Опции темы
rcdimon
Дата 3.2.2006, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Хочу сделать новости на своем сайте.

Интересующие меня новости существуют в формате RSS. Я читал что это оч удобно. Но на практике заметил скорее обратное!

Существует только 1 модуль для парсинга RSS. И он НЕ поддерживает RSS 2.0!
Ему нужны файлы с разными кодировками. Если их нет- прога завершается с 500 ошибкой сервера.

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

А мне надо что бы все было стабильно!

Подскажите, пожалуйста, как организовать парсинг RSS.
PM MAIL ICQ   Вверх
rcdimon
Дата 3.2.2006, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Есть такой тестовый код

Код

#!/usr/perl58/bin/perl

use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use DBI;
use XML::RSS;
use LWP::Simple;

print header( -charset => 'windows-1251');

$pref = "../";
require $pref.'/rss_config.conf';                # System properties
require $pref.$libs_path.'/mysql.pl';                # Database functions
require $pref.$libs_path.'/rss_parser.pl';            # Charset  functions


my $content =get("http://192.168.0.33/temp/yandex.rss");
my $rss = new XML::RSS;
 $rss->parse($content);
  
print "XML encoding: ".$rss->{encoding} ."<br>";
print "RSS Version: ".$rss->{version}."<br>";
print "Title: ".$rss->channel('title')."<br>";
print "Language: ".$rss->channel('language')."<br>";
print "Rating: ".$rss->channel('rating')."<br>";
print "Copyright: ".$rss->channel('copyright')."<br>";
print "Publish Date: ".$rss->channel('pubDate')."<br>";
print "Last Build Date: ".$rss->channel('lastBuildDate')."<br>";
print "CDF URL: ".$rss->channel('docs')."<br>";
print "Items: ".scalar(@{$rss->items})."<br>";


print '<hr>';
    $count =  scalar(@{$rss->items});
    for ($i=0;$i<$count; $i++){
    $item = $rss->{items}[$i];
    print $i;
        print "title: $item->{'title'}<br>";
        print "link: $item->{'link'}<br>";
        print '<hr>';
    }




Которвый в принципе то работает!

Но оочень глюкаво.

если файл RSS маленький И в нем не много элементов <item> то он с ним спокойно справляется.

Но когда этих элемнтов штук 30! Она просто зависает!
А когда я к
print "title: $item->{'title'}<br>";
print "link: $item->{'link'}<br>";
добавляю еще
print "text: $item->{'description'}<br>";

ТО она вешается уже на 8-и элементах!

Если что, то комп на котором проходят тестирования мощный- Dual Xeon 3.0 с 1 гигом ОЗУ. Так что просто тормозить эта штука не может!

Вот и хотелось бы понять в ЧЕМ ДЕЛО?!
smile smile smile smile smile smile smile

PM MAIL ICQ   Вверх
Usya
Дата 4.2.2006, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



А если самому написать соответствующую процедурку?
Формат *.rss файла, в принципе, не сильно мудреный.
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
rcdimon
Дата 4.2.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Ну да... smile Они бывают 7-и версий!

Как тебе вот такая? smile

Код

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xhtml [ <!ENTITY nbsp " "> <!ENTITY middot "·">]>
<?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<?xml-stylesheet type="text/css" href="rss.css"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
   <channel rdf:about="http://www.forum.vingrad.ru/">
        <title>RSS раздела Array</title>
        <link>http://www.forum.vingrad.ru/rsshelp.php</link>
        <description>Последние 12 сообщений раздела Array</description>
   <!--     <language>ru</language>

        <managingEditor>sergej.z</managingEditor>
        <webMaster>http://vingrad.ru/@sergej.z</webMaster>
        <lastBuildDate>2006-02-03T18:48+39:00</lastBuildDate>
        <pubDate>2006-02-03T18:48+39:00</pubDate>
        <generator>Винград RSS - Генератор</generator>  -->
      <items>
      <rdf:Seq>
       <rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=82300&amp;view=findpost&amp;p=636165" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=82275&amp;view=findpost&amp;p=635673" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=55958&amp;view=findpost&amp;p=635665" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=82282&amp;view=findpost&amp;p=635658" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=81601&amp;view=findpost&amp;p=635481" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=82291&amp;view=findpost&amp;p=635422" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=82166&amp;view=findpost&amp;p=634857" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=81700&amp;view=findpost&amp;p=634317" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=81839&amp;view=findpost&amp;p=634162" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=81993&amp;view=findpost&amp;p=633922" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=76863&amp;view=findpost&amp;p=632881" />
<rdf:li rdf:resource="http://forum.vingrad.ru/index.php?showtopic=82414&amp;view=findpost&amp;p=636266" />

      </rdf:Seq>
      </items>
   </channel>
  <item rdf:about="http://forum.vingrad.ru/index.php?showtopic=82414&amp;view=findpost&amp;p=636266">
   <!--   <topicnumber>82414</topicnumber>
      <postnumber>636266</postnumber> -->
      <title>Парсинг RSS</title>

      <link>http://forum.vingrad.ru/index.php?showtopic=82414&amp;view=findpost&amp;p=636266</link>

     <description>
                
        &lt;!--Begin Msg Number 636266--&gt;

&lt;table&gt;
    &lt;tr&gt;
    &lt;td&gt;
       &lt;br /&gt;
            &lt;a border="0" href="http://vingrad.ru/@rcdimon"&gt;
            &lt;img border="0" src="http://forum.vingrad.ru/button/button.php?nick=rcdimon" width="88" height="70" alt="Vingrad Forum" /&gt;
             &lt;/a&gt;
     &lt;/td&gt;
     &lt;td&gt;
               Есть такой тестовый код&lt;br /&gt;&lt;br /&gt;&lt;div class='postcolor'&gt;&lt;table class='code' cellspacing='0'&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Код&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class='code'&gt;&lt;code id='perl_zN2I2O' &gt;&lt;br /&gt;#!/usr/perl58/bin/perl&lt;br /&gt;&lt;br /&gt;use&nbsp;CGI&nbsp;qw(:standard);&lt;br /&gt;use&nbsp;CGI::Carp&nbsp;qw(fatalsToBrowser);&lt;br /&gt;use&nbsp;DBI;&lt;br /&gt;use&nbsp;XML::RSS;&lt;br /&gt;use&nbsp;LWP::Simple;&lt;br /&gt;&lt;br /&gt;print&nbsp;header(&nbsp;-charset&nbsp;=>&nbsp;'windows-1251');&lt;br /&gt;&lt;br /&gt;$pref&nbsp;=&nbsp;"../";&lt;br /&gt;require&nbsp;$pref.'/rss_config.conf';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;System&nbsp;properties&lt;br /&gt;require&nbsp;$pref.$libs_path.'/mysql.pl';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Database&nbsp;functions&lt;br /&gt;require&nbsp;$pref.$libs_path.'/rss_parser.pl';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Charset&nbsp;&nbsp;functions&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;my&nbsp;$content&nbsp;=get("http://192.168.0.33/temp/yandex.rss");&lt;br /&gt;my&nbsp;$rss&nbsp;=&nbsp;new&nbsp;XML::RSS;&lt;br /&gt;&nbsp;$rss->parse($content);&lt;br /&gt;&nbsp;&nbsp;&lt;br /&gt;print&nbsp;"XML&nbsp;encoding:&nbsp;".$rss->{encoding}&nbsp;."<br>";&lt;br /&gt;print&nbsp;"RSS&nbsp;Version:&nbsp;".$rss->{version}."<br>";&lt;br /&gt;print&nbsp;"Title:&nbsp;".$rss->channel('title')."<br>";&lt;br /&gt;print&nbsp;"Language:&nbsp;".$rss->channel('language')."<br>";&lt;br /&gt;print&nbsp;"Rating:&nbsp;".$rss->channel('rating')."<br>";&lt;br /&gt;print&nbsp;"Copyright:&nbsp;".$rss->channel('copyright')."<br>";&lt;br /&gt;print&nbsp;"Publish&nbsp;Date:&nbsp;".$rss->channel('pubDate')."<br>";&lt;br /&gt;print&nbsp;"Last&nbsp;Build&nbsp;Date:&nbsp;".$rss->channel('lastBuildDate')."<br>";&lt;br /&gt;print&nbsp;"CDF&nbsp;URL:&nbsp;".$rss->channel('docs')."<br>";&lt;br /&gt;print&nbsp;"Items:&nbsp;".scalar(@{$rss->items})."<br>";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;print&nbsp;'<hr>';&lt;br /&gt;&nbsp;&nbsp;&nbsp;&nbsp;$count&nbsp;=&nbsp;&nbsp;scalar(@{$rss->items});&lt;br /&gt;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;($i=0;$i<$count;&nbsp;$i++){&lt;br /&gt;&nbsp;&nbsp;&nbsp;&nbsp;$item&nbsp;=&nbsp;$rss->{items}[$i];&lt;br /&gt;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;$i;&lt;br /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"title:&nbsp;$item->{'title'}<br>";&lt;br /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"link:&nbsp;$item->{'link'}<br>";&lt;br /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'<hr>';&lt;br /&gt;&nbsp;&nbsp;&nbsp;&nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Которвый в принципе то работает!&lt;br /&gt;&lt;br /&gt;Но оочень глюкаво.&lt;br /&gt;&lt;br /&gt;если файл RSS маленький И в нем не много элементов &lt;item&gt; то он с ним спокойно справляется.&lt;br /&gt;&lt;br /&gt;Но когда этих элемнтов штук 30! Она просто зависает! &lt;br /&gt;А когда я к &lt;br /&gt;        print &quot;title: $item-&gt;{'title'}&lt;br&gt;&quot;;&lt;br /&gt;        print &quot;link: $item-&gt;{'link'}&lt;br&gt;&quot;;&lt;br /&gt;добавляю еще &lt;br /&gt;        print &quot;text: $item-&gt;{'description'}&lt;br&gt;&quot;;&lt;br /&gt;&lt;br /&gt;ТО она вешается уже на 8-и элементах!&lt;br /&gt;&lt;br /&gt;Если что, то комп на котором проходят тестирования мощный- Dual Xeon 3.0 с 1 гигом ОЗУ. Так что просто тормозить эта штука не может!&lt;br /&gt;&lt;br /&gt;Вот и хотелось бы понять в ЧЕМ ДЕЛО?! &lt;br /&gt; &lt;img src='http://forum.vingrad.ru/html/emoticons/sad.gif' alt='smile' /&gt;  &lt;img src='http://forum.vingrad.ru/html/emoticons/sad.gif' alt='smile' /&gt;  &lt;img src='http://forum.vingrad.ru/html/emoticons/sad.gif' alt='smile' /&gt;  &lt;img src='http://forum.vingrad.ru/html/emoticons/sad.gif' alt='smile' /&gt;  &lt;img src='http://forum.vingrad.ru/html/emoticons/sad.gif' alt='smile' /&gt;  &lt;img src='http://forum.vingrad.ru/html/emoticons/sad.gif' alt='smile' /&gt;  &lt;img src='http://forum.vingrad.ru/html/emoticons/sad.gif' alt='smile' /&gt; &lt;br /&gt; 
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
     </description>
      <dc:creator>rcdimon</dc:creator>
      <dc:date>2006-02-03T17:03+06:00</dc:date>
   </item><item rdf:about="http://forum.vingrad.ru/index.php?showtopic=82300&amp;view=findpost&amp;p=636165">
   <!--   <topicnumber>82300</topicnumber>
      <postnumber>636165</postnumber> -->
      <title>взаимодействие двух скриптов на удаленных компах, как организовать?</title>

      <link>http://forum.vingrad.ru/index.php?showtopic=82300&amp;view=findpost&amp;p=636165</link>

     <description>
                
        &lt;!--Begin Msg Number 636165--&gt;

&lt;table&gt;
    &lt;tr&gt;
    &lt;td&gt;
       &lt;br /&gt;
            &lt;a border="0" href="http://vingrad.ru/@saint"&gt;
            &lt;img border="0" src="http://forum.vingrad.ru/button/button.php?nick=saint" width="88" height="70" alt="Vingrad Forum" /&gt;
             &lt;/a&gt;
     &lt;/td&gt;
     &lt;td&gt;
               &lt;b&gt;korob2001&lt;/b&gt;, благодарю, твои примеры очень помогли разобраться. Инфу от твоего сервера получил  &lt;img src='http://forum.vingrad.ru/html/emoticons/biggrin.gif' alt='smile' /&gt;  
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
     </description>
      <dc:creator>saint</dc:creator>
      <dc:date>2006-02-03T05:07+06:00</dc:date>
   </item>
<item rdf:about="http://forum.vingrad.ru/index.php?showtopic=82275&amp;view=findpost&amp;p=635673">
   <!--   <topicnumber>82275</topicnumber>
      <postnumber>635673</postnumber> -->
      <title>запись данных из СОКЕТА в файл., open port 455</title>

      <link>http://forum.vingrad.ru/index.php?showtopic=82275&amp;view=findpost&amp;p=635673</link>

     <description>
                
        &lt;!--Begin Msg Number 635673--&gt;

&lt;table&gt;
    &lt;tr&gt;
    &lt;td&gt;
       &lt;br /&gt;
            &lt;a border="0" href="http://vingrad.ru/@sharq"&gt;
            &lt;img border="0" src="http://forum.vingrad.ru/button/button.php?nick=sharq" width="88" height="70" alt="Vingrad Forum" /&gt;
             &lt;/a&gt;
     &lt;/td&gt;
     &lt;td&gt;
               &lt;b&gt;diverd&lt;/b&gt; &lt;b&gt;perldoc Socket, IO::Socket&lt;/b&gt;, можешь почитать книги по Сетевому программирования на perl + смотри Рецепты.&lt;br /&gt;&lt;br /&gt; &lt;img src='http://forum.vingrad.ru/html/emoticons/wink.gif' alt='smile' /&gt;  
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
     </description>
      <dc:creator>sharq</dc:creator>
      <dc:date>2006-02-03T05:21+43:00</dc:date>
   </item>
<item rdf:about="http://forum.vingrad.ru/index.php?showtopic=55958&amp;view=findpost&amp;p=635665">
   <!--   <topicnumber>55958</topicnumber>
      <postnumber>635665</postnumber> -->
      <title>Perl6. Какой он?</title>

      <link>http://forum.vingrad.ru/index.php?showtopic=55958&amp;view=findpost&amp;p=635665</link>

     <description>
                
        &lt;!--Begin Msg Number 635665--&gt;


PM MAIL ICQ   Вверх
sharq
Дата 4.2.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



rcdimon
Цитата(rcdimon @ 3.2.2006, 20:03 Найти цитируемый пост)

Существует только 1 модуль для парсинга RSS. И он НЕ поддерживает RSS 2.0!

На счет одного модуля для RSS на CPANе ты глубоко заблуждаешься, смотри.
На счет модуля XML::RSS - это очень мощный модуль, читай внимательно документацию по модулю.
ВОт пример из SYNOPSIS:
Код

 # create an RSS 1.0 file (http://purl.org/rss/1.0/)
 use XML::RSS;
 my $rss = new XML::RSS (version => '1.0');
 $rss->channel(
   title        => "freshmeat.net",
   link         => "http://freshmeat.net";,
   description  => "the one-stop-shop for all your Linux software needs",
   dc => {
     date       => '2000-08-23T07:00+00:00',
     subject    => "Linux Software",
     creator    => '[email protected]',
     publisher  => '[email protected]',
     rights     => 'Copyright 1999, Freshmeat.net',
     language   => 'en-us',
   },
   syn => {
     updatePeriod     => "hourly",
     updateFrequency  => "1",
     updateBase       => "1901-01-01T00:00+00:00",
   },
   taxo => [
     'http://dmoz.org/Computers/Internet',
     'http://dmoz.org/Computers/PC'
   ]
 );

 $rss->image(
   title  => "freshmeat.net",
   url    => "http://freshmeat.net/images/fm.mini.jpg";,
   link   => "http://freshmeat.net";,
   dc => {
     creator  => "G. Raphics (graphics at freshmeat.net)",
   },
 );

 $rss->add_item(
   title       => "GTKeyboard 0.85",
   link        => "http://freshmeat.net/news/1999/06/21/930003829.html";,
   description => "GTKeyboard is a graphical keyboard that ...",
   dc => {
     subject  => "X11/Utilities",
     creator  => "David Allen (s2mdalle at titan.vcu.edu)",
   },
   taxo => [
     'http://dmoz.org/Computers/Internet',
     'http://dmoz.org/Computers/PC'
   ]
 );

 $rss->textinput(
   title        => "quick finder",
   description  => "Use the text input below to search freshmeat",
   name         => "query",
   link         => "http://core.freshmeat.net/search.php3";,
 );

 # Optionally mixing in elements of a non-standard module/namespace

 $rss->add_module(prefix=>'my', uri=>'http://purl.org/my/rss/module/');

 $rss->add_item(
   title       => "xIrc 2.4pre2",
   link        => "http://freshmeat.net/projects/xirc/";,
   description => "xIrc is an X11-based IRC client which ...",
   my => {
     rating    => "A+",
     category  => "X11/IRC",
   },
 );

  $rss->add_item (title=>$title, link=>$link, slash=>{ topic=>$topic });

 # create an RSS 2.0 file
 use XML::RSS;
 my $rss = new XML::RSS (version => '2.0');
 $rss->channel(title          => 'freshmeat.net',
               link           => 'http://freshmeat.net',
               language       => 'en',
               description    => 'the one-stop-shop for all your Linux software needs',
               rating         => '(PICS-1.1 "http://www.classify.org/safesurf/"; 1 r (SS~~000 1))',
               copyright      => 'Copyright 1999, Freshmeat.net',
               pubDate        => 'Thu, 23 Aug 1999 07:00:00 GMT',
               lastBuildDate  => 'Thu, 23 Aug 1999 16:20:26 GMT',
               docs           => 'http://www.blahblah.org/fm.cdf',
               managingEditor => '[email protected]',
               webMaster      => '[email protected]'
               );

 $rss->image(title       => 'freshmeat.net',
             url         => 'http://freshmeat.net/images/fm.mini.jpg',
             link        => 'http://freshmeat.net',
             width       => 88,
             height      => 31,
             description => 'This is the Freshmeat image stupid'
             );

 $rss->add_item(title => "GTKeyboard 0.85",
        # creates a guid field with permaLink=true
        permaLink  => "http://freshmeat.net/news/1999/06/21/930003829.html";,
                # alternately creates a guid field with permaLink=false
        # guid     => "gtkeyboard-0.85
        enclosure   => { url=>$url, type=>"application/x-bittorrent" },
        description => 'blah blah'
);
 
 $rss->textinput(title => "quick finder",
                 description => "Use the text input below to search freshmeat",
                 name  => "query",
                 link  => "http://core.freshmeat.net/search.php3";
                 );

 # create an RSS 0.9 file
 use XML::RSS;
 my $rss = new XML::RSS (version => '0.9');
 $rss->channel(title => "freshmeat.net",
               link  => "http://freshmeat.net";,
               description => "the one-stop-shop for all your Linux software needs",
               );

 $rss->image(title => "freshmeat.net",
             url   => "http://freshmeat.net/images/fm.mini.jpg";,
             link  => "http://freshmeat.net";
             );

 $rss->add_item(title => "GTKeyboard 0.85",
                link  => "http://freshmeat.net/news/1999/06/21/930003829.html";
                );

 $rss->textinput(title => "quick finder",
                 description => "Use the text input below to search freshmeat",
                 name  => "query",
                 link  => "http://core.freshmeat.net/search.php3";
                 );

 # print the RSS as a string
 print $rss->as_string;

 # or save it to a file
 $rss->save("fm.rdf");

 # insert an item into an RSS file and removes the oldest item if
 # there are already 15 items
 my $rss = new XML::RSS;
 $rss->parsefile("fm.rdf");
 pop(@{$rss->{'items'}}) if (@{$rss->{'items'}} == 15);
 $rss->add_item(title => "MpegTV Player (mtv) 1.0.9.7",
                link  => "http://freshmeat.net/news/1999/06/21/930003958.html";,
                mode  => 'insert'
                );

 # parse a string instead of a file
 $rss->parse($string);

 # print the title and link of each RSS item
 foreach my $item (@{$rss->{'items'}}) {
     print "title: $item->{'title'}\n";
     print "link: $item->{'link'}\n\n";
 }

 # output the RSS 0.9 or 0.91 file as RSS 1.0
 $rss->{output} = '1.0';
 print $rss->as_string;


Очевидно, что модуль поддерживает многие версии RSS, в том числе 2.0.

Если тебе по каким-то причинам не устраивают готовые модули, то дерзай XML::Parser и обрабатывай ту версию, кот. тебе действительно необходима.

smile
Добавлено @ 13:45
Цитата(rcdimon @ 3.2.2006, 21:48 Найти цитируемый пост)

Но когда этих элемнтов штук 30! Она просто зависает!
А когда я к
print "title: $item->{'title'}<br>";
print "link: $item->{'link'}<br>";
добавляю еще
print "text: $item->{'description'}<br>";

ТО она вешается уже на 8-и элементах!

Если что, то комп на котором проходят тестирования мощный- Dual Xeon 3.0 с 1 гигом ОЗУ. Так что просто тормозить эта штука не может!

а может твой скрипт не может получить rss,
попробуй обрабатывать локальные rss-файлы (через parsefile),
а когда заработает уже пробуй с удаленными.


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
sharq
Дата 4.2.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Для твоей задачи лучше использовать модуль XML::RSS::Parser::Lite, очень прост в использовании.

Код

use XML::RSS::Parser::Lite;
use LWP::Simple;

my $xml = get("http://forum.woweb.ru/rss/");
my $rp = new XML::RSS::Parser::Lite;
$rp->parse($xml);
print $rp->get('title') . " " . $rp->get('url') . " " . $rp->get('description') . "\n";


smile

Это сообщение отредактировал(а) sharq - 4.2.2006, 15:50


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
rcdimon
Дата 4.2.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



С локальным файлом тоже самое smile

А версии мне необходимы все

А задача у меня очень большая. Мне не только ссылку, описание и заголовок нужен. Мне нужно жестоко парсить 100% файла.
Добавлено @ 15:13
RSS 2.0 этот модуль действительно поддерживает. Но мне от этого не легче! Он виснет!

Это сообщение отредактировал(а) rcdimon - 4.2.2006, 15:08
PM MAIL ICQ   Вверх
sharq
Дата 4.2.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



rcdimon посмотри содержание $rp, там все есть.
Цитата(rcdimon @ 4.2.2006, 15:58 Найти цитируемый пост)

А версии мне необходимы все

0.9, 0.91, 1.0, 2.0 - мало? тогда пиши свой парсер RSS.

smile



--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
rcdimon
Дата 4.2.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



НЕТ! Мне этого не мало! Мне нужно что бы он стабильно работал! Других жалоб НЕТ НА НЕГО! smile smile smile smile smile smile smile
PM MAIL ICQ   Вверх
sharq
Дата 4.2.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Цитата(rcdimon @ 4.2.2006, 15:58 Найти цитируемый пост)

Он виснет!

привиди пример rss и скорей всего виснет у тебя из-за того, что скрипт не может получить файл http://192.168.0.33/temp/yandex.rss.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
rcdimon
Дата 4.2.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Писать своя парсер непредставляется возможным! Этот тоже не дураки писали! А время, выделенное под проект у меня жестоко ограничено
Добавлено @ 15:56
Я уже исправил давно как ты сказал это на

$rss->parsefile('kinder.rss');

Пичем получить к нему доступ он может! ПОтому что он выводит на экран отпарсенные данные! Но останавливается на непоследнем элементе. При этом браузер не перестает загружать. думая что данные будут еще передаваться. Но тем не менее сколько бы я не ждал новых данных не появляется.
Добавлено @ 16:00
вот с таким RSS он виснет уже где-то на 30-50 новости

Код

<?xml version="1.0" encoding="windows-1251"?>
<rss xmlns:yandex="http://news.yandex.ru" version="2.0">
  <channel>
    <title>Яндекс.Новости: Hardware</title>
    <link>http://news.yandex.ru/Russia/hardware.html</link>
    <description>Первая в России служба автоматической обработки и систематизации новостей. Сообщения ведущих российских и мировых СМИ. Обновление в режиме реального времени 24 часа в сутки.</description>
    <image>
<url>http://company.yandex.ru/i/50x23.gif</url><link>http://news.yandex.ru</link><title>Яндекс.Новости</title>
</image>
    <lastBuildDate>Fri, 03 Feb 2006 16:23:49 GMT +0300</lastBuildDate>
    <item>
      <title>BFG-tech выпустила новую AGP-видеокарту GeForce 7800 GS</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=lenta.ru/news/2006/02/03/nvidia/&amp;country=Russia</link>
      <description> ... PCI-Express, сообщает сайт Bit-Tech Компания Nvidia и ее партнеры разработали GeForce 7800 GS AGP для многочисленных пользователей AGP, у которых недостаточно средств для ... &lt;br&gt;GeForce 7800 GS без технических сбоев &quot;разгоняется&quot; с частоты 400/1250 Мгц до 450/1264 Мгц и демонстрирует высокую производительности при работе с наиболее ресурсоемкими ... &lt;br&gt;</description>
      <pubDate>Fri, 03 Feb 2006 07:23:30 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=lenta.ru/news/2006/02/03/nvidia/&amp;country=Russia</guid>
    </item>
    <item>
      <title>20-дюймовый ЖК-монитор Benq FP2092</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/49/43&amp;country=Russia</link>
      <description> ... равна 300 кд/м2, а уровень контрастности - 700:1. Время отклика матрицы - 12 мс, при этом производитель указывает скорость переключения &quot;серый-серый&quot; (grey-to-grey, GTG) ... &lt;br&gt;Углы обзора дисплея, выполненного по TN-технологии, составляют 178° по горизонтали и по вертикали.&lt;br&gt;</description>
      <pubDate>Fri, 03 Feb 2006 12:02:04 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/49/43&amp;country=Russia</guid>
    </item>
    <item>
      <title>Трёхмерный настольный сканер от NextEngine</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=hard.compulenta.ru/250031/%3Fr1%3Dyandex%26r2%3Dnews&amp;country=Russia</link>
      <description> ... до 480 Мбит/с. Для работы с устройством потребуется ПК, оборудованный процессором с тактовой частотой не ниже 2 ГГц (рекомендуется 3 ГГц), 1 Гб оперативной памяти и ... &lt;br&gt;В комплект поставки входят USB-кабель, сетевой кабель и диск с сопутствующим программным обеспечением.&lt;br&gt;</description>
      <pubDate>Thu, 02 Feb 2006 08:40:04 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=hard.compulenta.ru/250031/%3Fr1%3Dyandex%26r2%3Dnews&amp;country=Russia</guid>
    </item>
    <item>
      <title>Серия видеокарт Club 3D Radeon X1900</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/48/90&amp;country=Russia</link>
      <description>Компания Club 3D анонсировала свои планы по выпуску видеокарт на базе нового графического ядра ATI R580.&lt;br&gt; ... образом, все ведущие производители видеокарт отдали должное самому производительному на текущий момент графическому акселератору, анонсировав свои продукты на базе нового ... &lt;br&gt;</description>
      <pubDate>Thu, 02 Feb 2006 15:10:17 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/48/90&amp;country=Russia</guid>
    </item>
      <item>
      <title>Серия видеокарт Club 3D Radeon X1900</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/48/90&amp;country=Russia</link>
      <description>Компания Club 3D анонсировала свои планы по выпуску видеокарт на базе нового графического ядра ATI R580.&lt;br&gt; ... образом, все ведущие производители видеокарт отдали должное самому производительному на текущий момент графическому акселератору, анонсировав свои продукты на базе нового ... &lt;br&gt;</description>
      <pubDate>Thu, 02 Feb 2006 15:10:17 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/48/90&amp;country=Russia</guid>
    </item>
    <item>
      <title>Графический чип nVidia G80: предварительные сведения</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=itware.com.ua/news/11893/rss/&amp;country=Russia</link>
      <description>Тактовая частота ядра составит примерно 800 МГц.&lt;br&gt;Память - микросхемы GDDR4 от Samsung (тактовая частота 900-1000 МГц DDR).&lt;br&gt;</description>
      <pubDate>Thu, 02 Feb 2006 14:21:55 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=itware.com.ua/news/11893/rss/&amp;country=Russia</guid>
    </item>
    <item>
      <title>Ко дню Святого Валентина: влагозащищенный Pentax Optio WPi в красном и синем цвете</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/49/27&amp;country=Russia</link>
      <description> ... степень защиты от влаги - JIS Class 8 Режим съемки с повышенной чувствительностью до ISO 1600 (доступен в некоторых сюжетных программах) Запись звуковых комментариев в ... &lt;br&gt;3х зум, 6,3 - 18,9 мм (38 - 114 мм в 35-мм экв.), f/3,3 - f/4 Цифровой зум:&lt;br&gt;</description>
      <pubDate>Fri, 03 Feb 2006 08:50:54 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/49/27&amp;country=Russia</guid>
    </item>
    <item>
      <title>Плеер-корабль спущен на воду</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=news.ferra.ru/hard/2006/02/03/55766/&amp;country=Russia</link>
      <description>Впрочем, сам супер-эсминец, видимо, того стоит:&lt;br&gt;Некоторые каюты корабля представляют собой уютные жилища, оснащенные CD-плеером, качественной пятиканальной акустикой, доступом в интернет и даже интегрированным зарядным ... &lt;br&gt;</description>
      <pubDate>Fri, 03 Feb 2006 14:22:26 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=news.ferra.ru/hard/2006/02/03/55766/&amp;country=Russia</guid>
    </item>
    <item>
      <title>Процессор для мультимедийных систем Renesas SH7785</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/47/56&amp;country=Russia</link>
      <description> ... в секунду, достичь которой помогают размещенные на чипе кэш в 64 Кб (32 Кб для инструкций и столько же - для данных) и ОЗУ (8 Кб для инструкций, 16 Кб для данных, и 128 ... &lt;br&gt; ... до 4,2 млрд. операций с плавающей точкой в секунду(GFLOPS) и осуществляет аппаратное выполнение функций синуса/косинуса и векторных операций, часто используемых при ... &lt;br&gt;</description>
      <pubDate>Wed, 01 Feb 2006 09:50:13 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/47/56&amp;country=Russia</guid>
    </item>
    <item>
      <title>65 нм чипы от Infineon</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=techlabs.by/news/hardware/7114.html&amp;country=Russia</link>
      <description>Такими чипами являются микросхемы CMOS с низким энергопотреблением.&lt;br&gt; ... нм чипов налажено в рамках четырёхстороннего альянса ICIS, включающего IBM, Chartered, Infineon и Samsung (как нетрудно догадаться, аббревиатура составлено из первых букв ... &lt;br&gt;</description>
      <pubDate>Tue, 31 Jan 2006 23:11:19 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=techlabs.by/news/hardware/7114.html&amp;country=Russia</guid>
    </item>
    <item>
      <title>&quot;Шахматная&quot; клавиатура от Owltech</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=hard.compulenta.ru/250143/%3Fr1%3Dyandex%26r2%3Dnews&amp;country=Russia</link>
      <description>Компания Owltech представила мембранную клавиатуру OWL-KB108WB, раскрашенную под шахматную доску.&lt;br&gt; ... в комплекте имеется переходник на PS/2) и совместима с машинами, работающими под управлением ОС Windows XP, 2000, Me, 98SE и Mac OS X. Стоит клавиатура около 23 долларов ... &lt;br&gt;</description>
      <pubDate>Thu, 02 Feb 2006 13:34:13 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=hard.compulenta.ru/250143/%3Fr1%3Dyandex%26r2%3Dnews&amp;country=Russia</guid>
    </item>
    <item>
      <title>Внешний DVD-рекордер LG с видеозахватом</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=techlabs.by/news/hardware/7112.html&amp;country=Russia</link>
      <description> ... которые, подобно ксероксу, выдают корпию документа по нажатию одной кнопки, устройства для копирования CD и DVD, мини-принтеры, подключаемые к ЦФК - все эти устройства ... &lt;br&gt; ... 0 Скоростная формула и поддерживаемые форматы привода следующая: чтение- DVD-ROM 16x, CD-ROM 48x; запись - DVD+R/-R 16x, DVD+RW 8x, DVD-RW 6x, DVD+R/-R DL 8x, DVD-RAM 5x, ... &lt;br&gt;</description>
      <pubDate>Tue, 31 Jan 2006 23:11:19 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=techlabs.by/news/hardware/7112.html&amp;country=Russia</guid>
    </item>
    <item>
      <title>Foxconn C557AA - 48 линий PCI-E и поддержка Conroe</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=techlabs.by/news/hardware/7099.html&amp;country=Russia</link>
      <description> ... мостом С55, который должен иметь не менее 20-ти линий даст в сумме 48 линий PCI-E. Этого достаточно, например, для организации SLI режима типа x16 + x16 (Dual x16 SLI), и ... &lt;br&gt; ... RD580 от ATI должен был содержать 44 линии PCI-E. Что касается поддержки процессоров, то плата будет иметь шину 1066 МГц и поддерживать как последние ядра Presler, так и ... &lt;br&gt;</description>
      <pubDate>Tue, 31 Jan 2006 23:11:19 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=techlabs.by/news/hardware/7099.html&amp;country=Russia</guid>
    </item>
    <item>
      <title>Слух: Palm готовит мультимедийный смартфон Treo 800p</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=dk.compulenta.ru/250295/%3Fr1%3Dyandex%26r2%3Dnews&amp;country=Russia</link>
      <description> ... на работу в сотовых сетях стандарта CDMA2000 EvDO, оборудовано экраном с разрешением 240 х 240 точек, 1,3-мегапиксельной камерой, контроллером Bluetooth и слотом SD.&lt;br&gt; ... карт формата Secure Digital, жидкокристаллический дисплей с разрешением 320 х 320 точек, контроллеры беспроводной связи Bluetooth и Wi-Fi, а также встроенную камеру с 3,2 ... &lt;br&gt;</description>
      <pubDate>Fri, 03 Feb 2006 10:40:04 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=dk.compulenta.ru/250295/%3Fr1%3Dyandex%26r2%3Dnews&amp;country=Russia</guid>
    </item>
    <item>
      <title>OCZ EL DDR2 PC2-6400 - новые 800 МГц модули Platinum XTC Edition</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/47/71&amp;country=Russia</link>
      <description>С целью обеспечения растущего спроса на память DDR2 компания OCZ выпустила модули PC2-6400 EL серии Platinum XTC Edition.&lt;br&gt;512 Мб и 1 Гб (2x512 Мб) модули, оптимизированные для работы в двухканальном режиме (Dual Channel Optimized Kit) Тип: небуферируемая, 240-pin Теплорассеиватель:&lt;br&gt;</description>
      <pubDate>Wed, 01 Feb 2006 10:43:04 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/47/71&amp;country=Russia</guid>
    </item>
    <item>
      <title>CompAmerica ORCA FX2 - самый мощный ноутбук в мире</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/48/72&amp;country=Russia</link>
      <description>AMD Athlon FX-60, 2,6 ГГц или AMD Athlon 64 X2 от 3800+ до 4800+ или AMD Athlon 64 Processors от 3000+ до 4000+; оперативная память: от 512 Мб до 2 Гб; жесткий диск:&lt;br&gt; ... GTX или GeForce Go 6800, 256 Мб; 17-дюймовый дисплей с разрешением 1680 x 1050 или 1920 x 1200 пикселей; звук: кодек AC97, 7.1 каналов; TV-тюнер с пультом ДУ (опционально ... &lt;br&gt;</description>
      <pubDate>Thu, 02 Feb 2006 10:01:55 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/48/72&amp;country=Russia</guid>
    </item>
        <item>
      <title>BFG-tech выпустила новую AGP-видеокарту GeForce 7800 GS</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=lenta.ru/news/2006/02/03/nvidia/&amp;country=Russia</link>
      <description> ... PCI-Express, сообщает сайт Bit-Tech Компания Nvidia и ее партнеры разработали GeForce 7800 GS AGP для многочисленных пользователей AGP, у которых недостаточно средств для ... &lt;br&gt;GeForce 7800 GS без технических сбоев &quot;разгоняется&quot; с частоты 400/1250 Мгц до 450/1264 Мгц и демонстрирует высокую производительности при работе с наиболее ресурсоемкими ... &lt;br&gt;</description>
      <pubDate>Fri, 03 Feb 2006 07:23:30 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=lenta.ru/news/2006/02/03/nvidia/&amp;country=Russia</guid>
    </item>
    <item>
      <title>20-дюймовый ЖК-монитор Benq FP2092</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/49/43&amp;country=Russia</link>
      <description> ... равна 300 кд/м2, а уровень контрастности - 700:1. Время отклика матрицы - 12 мс, при этом производитель указывает скорость переключения &quot;серый-серый&quot; (grey-to-grey, GTG) ... &lt;br&gt;Углы обзора дисплея, выполненного по TN-технологии, составляют 178° по горизонтали и по вертикали.&lt;br&gt;</description>
      <pubDate>Fri, 03 Feb 2006 12:02:04 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/49/43&amp;country=Russia</guid>
    </item>
       <item>
      <title>BFG-tech выпустила новую AGP-видеокарту GeForce 7800 GS</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=lenta.ru/news/2006/02/03/nvidia/&amp;country=Russia</link>
      <description> ... PCI-Express, сообщает сайт Bit-Tech Компания Nvidia и ее партнеры разработали GeForce 7800 GS AGP для многочисленных пользователей AGP, у которых недостаточно средств для ... &lt;br&gt;GeForce 7800 GS без технических сбоев &quot;разгоняется&quot; с частоты 400/1250 Мгц до 450/1264 Мгц и демонстрирует высокую производительности при работе с наиболее ресурсоемкими ... &lt;br&gt;</description>
      <pubDate>Fri, 03 Feb 2006 07:23:30 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=lenta.ru/news/2006/02/03/nvidia/&amp;country=Russia</guid>
    </item>
  
    <item>
      <title>OCZ EL DDR2 PC2-6400 - новые 800 МГц модули Platinum XTC Edition</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/47/71&amp;country=Russia</link>
      <description>С целью обеспечения растущего спроса на память DDR2 компания OCZ выпустила модули PC2-6400 EL серии Platinum XTC Edition.&lt;br&gt;512 Мб и 1 Гб (2x512 Мб) модули, оптимизированные для работы в двухканальном режиме (Dual Channel Optimized Kit) Тип: небуферируемая, 240-pin Теплорассеиватель:&lt;br&gt;</description>
      <pubDate>Wed, 01 Feb 2006 10:43:04 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/47/71&amp;country=Russia</guid>
    </item>
    <item>
      <title>CompAmerica ORCA FX2 - самый мощный ноутбук в мире</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/48/72&amp;country=Russia</link>
      <description>AMD Athlon FX-60, 2,6 ГГц или AMD Athlon 64 X2 от 3800+ до 4800+ или AMD Athlon 64 Processors от 3000+ до 4000+; оперативная память: от 512 Мб до 2 Гб; жесткий диск:&lt;br&gt; ... GTX или GeForce Go 6800, 256 Мб; 17-дюймовый дисплей с разрешением 1680 x 1050 или 1920 x 1200 пикселей; звук: кодек AC97, 7.1 каналов; TV-тюнер с пультом ДУ (опционально ... &lt;br&gt;</description>
      <pubDate>Thu, 02 Feb 2006 10:01:55 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/48/72&amp;country=Russia</guid>
    </item>
        <item>
      <title>BFG-tech выпустила новую AGP-видеокарту GeForce 7800 GS</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=lenta.ru/news/2006/02/03/nvidia/&amp;country=Russia</link>
      <description> ... PCI-Express, сообщает сайт Bit-Tech Компания Nvidia и ее партнеры разработали GeForce 7800 GS AGP для многочисленных пользователей AGP, у которых недостаточно средств для ... &lt;br&gt;GeForce 7800 GS без технических сбоев &quot;разгоняется&quot; с частоты 400/1250 Мгц до 450/1264 Мгц и демонстрирует высокую производительности при работе с наиболее ресурсоемкими ... &lt;br&gt;</description>
      <pubDate>Fri, 03 Feb 2006 07:23:30 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=lenta.ru/news/2006/02/03/nvidia/&amp;country=Russia</guid>
    </item>
    <item>
      <title>20-дюймовый ЖК-монитор Benq FP2092</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/49/43&amp;country=Russia</link>
      <description> ... равна 300 кд/м2, а уровень контрастности - 700:1. Время отклика матрицы - 12 мс, при этом производитель указывает скорость переключения &quot;серый-серый&quot; (grey-to-grey, GTG) ... &lt;br&gt;Углы обзора дисплея, выполненного по TN-технологии, составляют 178° по горизонтали и по вертикали.&lt;br&gt;</description>
      <pubDate>Fri, 03 Feb 2006 12:02:04 GMT +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.ixbt.com/news/hard/index.shtml%3F05/49/43&amp;country=Russia</guid>
    </item>
   
 
  </channel>
</rss>



Большую часть файла пришлось вырезать. потому что форум не давал запостить такую большую мессагу
PM MAIL ICQ   Вверх
sergejzr
Дата 4.2.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Цитата(rcdimon @ 4.2.2006, 08:20 Найти цитируемый пост)

Как тебе вот такая?

Это наш винградовский smile Версия 1.0 А разве он с ошибками. По идее RSS по определению должен быть без ошибок в противном случае и парсить то нельзя! Потому что ты не можешь быть уверен, что новости не изменишь.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sharq
Дата 4.2.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



rcdimon
вот тебе два варианта
  • с модулем XML::RSS::Parser::Lite, простой вариант, ограниченный:
    Код

    use XML::RSS::Parser::Lite;

    open my $fh, '<', '1.rss';
    my $xml = join '', <$fh>;

    my $rp = new XML::RSS::Parser::Lite;
    $rp->parse($xml);
    print $rp->get('title') . " " . $rp->get('url') . " " . $rp->get('description') . "\n";

  • с модулем XML::RSS
    Код

    use XML::RSS;
    use Data::Dumper;

    my $rss = new XML::RSS (version => '1.0');
    $rss->parsefile('1.rss');

    #print Dumper $rss;
    print $rss->{'channel'}->{'title'};

    Но перед его использованием следует установить модуль XML::Encoding, т.к. по умолчанию в XML::Parser нет карты windows-1251 (т.е. файлика windows-1251.enc), хотя есть windows-1250 и 1252.

Выбирай сам, какой вариант использовать.

smile



--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
rcdimon
Дата 4.2.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Цитата

А разве он с ошибками


Нет. Он без ошибок! Я имел в виду что он сложный и самодельный парсер под него не написать.

Цитата

Выбирай сам, какой вариант использовать.


Я же говорю что использую второй! Эти кодировки на XML я поставил!

Так вот я его и использую!

НО ОН ВИСНЕТ! Ну что такое а.... smile smile smile
PM MAIL ICQ   Вверх
sharq
Дата 4.2.2006, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



rcdimon ты издеваешься?
Запусти оба примера, которые я тебе привел у себя и не через CGI, а через консоль и посмотри.
У меня они работают.

Теперь на счет перекодировки. Вот тебе CGI-скрипт, для разбора rss и вывода на страницу title и description (можешь вывести все остальное):
Код

use XML::RSS;
use CGI ':standard';

my $rss = new XML::RSS (version => '1.0');
$rss->parsefile('1.rss');

print header(-charset=>'windows-1251');
print h1($rss->{'channel'}->{'title'}), "\n";
print h3($rss->{'channel'}->{'description'}), "\n";


Все работает, не зависает и переконвертирует самостоятельно, вот html-код:
Код

<h1>Яндекс.Новости: Hardware</h1>
<h3>Первая в России служба автоматической обработки и систематизации новостей. Сообщения ведущ


1.rss - это rss yandex'а, который ты привел.
B прикрепи к сообщению полный rss.

smile

Это сообщение отредактировал(а) sharq - 4.2.2006, 17:34


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
rcdimon
Дата 4.2.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Гы... КОнсоль это безусловно хорошо... только работать должно в вебе под управлением апача smile
Добавлено @ 17:51
Да. В консоли действиеительно работает! Так в чем же тогда может быть дело?
PM MAIL ICQ   Вверх
sharq
Дата 4.2.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Смотри лог-апача.

Это сообщение отредактировал(а) sharq - 4.2.2006, 18:04


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
rcdimon
Дата 4.2.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Удивительно... но лог апача пуст. От того что тот модуль вешается или чешается что-то еще ошибок апач не фиксирует! Но одно могу сказать точно. В памяти компа остаются незавершенные процессы перла и апача. Даже после остановки севрера
PM MAIL ICQ   Вверх
korob2001
Дата 5.2.2006, 04:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Измени значение переменной $mirror_dir и запусти следующий код:
Код

#!/usr/bin/perl -T
use XML::Simple;
use LWP::Simple;
use Text::Iconv;
use CGI;

# Имя файла, под которым будет храниться зеркальная копия RSS
my $file = "news.rss";
# url RSS, откуда он будет сливаться, если срок годности его истёк
my $url  = "http://news.yandex.ru/Russia/index.rss";
# Время в минутах, сколько зеркальная копия будет считаться валидной
my $update = 15; # По умолчанию каждые 15 минут программа будет обновлять зеркало
# Путь к каталогу, в котором будем хранить наше зеркало
my $mirror_dir = "/home/localhost/www/rss";

my $conv = Text::Iconv->new("UTF-8","WINDOWS-1251");
my $cgi  = CGI->new();
$update *= 60;

# Подпрограмма создаёт зеркало если его не существует или обновляет его, если оно устарело
sub getRss {
    my($mirror_dir, $file, $valid_time) = @_;
    # Получаем время последней модификации файла
    my $last_update = (stat("$mirror_dir/$file"))[9];
    my $time_now    = time() - $valid_time;   
    mirror( $url, "$mirror_dir/$file" ) if(not -e "$mirror_dir/$file" or $time_now > $last_update);
    return XMLin("$mirror_dir/$file") or die "Can't open RSS: $!\n";
}

# Получаем наш RSS
my $xml = getRss( $mirror_dir, $file, $update );

# Генерируем HTML
print $cgi->header( -charset => "Windows-1251" );
print $cgi->start_html( -title => "News" );
print $cgi->start_table( { -width => 400,
                           -border => 0,
                           -cellspacing => 0,
                           -cellpadding => 5 } );

     foreach my $item ( @{$xml->{channel}{item}} ) {
             print $cgi->start_Tr( { -bgcolor => "#cccccc" } );
                  print $cgi->start_td( { -width => "100%" } );
                       print $cgi->b( { -style => "font-size: 16px" },
                                $conv->convert( $item->{title} ) );
                  print $cgi->end_td();
             print $cgi->end_Tr();
             print $cgi->start_Tr();
                  print $cgi->start_td();
                       print $cgi->span( { -style => "font-size: 12px;color: #0000cc" },
                                       "Дата публикации: " . $item->{pubDate} );

                  print $cgi->end_td();
             print $cgi->end_Tr();
             print $cgi->start_Tr();
                  print $cgi->start_td();
                       print $cgi->span( { -style => "font-size: 14px" },
                                $conv->convert( $item->{description} ) );
                       print $cgi->a( { -href => $item->{link} },
                            $cgi->span( { -style => "font-size: 14" }, "... Далее" ) );
                  print $cgi->end_td();
             print $cgi->end_Tr();
     }
print $cgi->end_table();
print $cgi->end_html();

У меня парсит.

Это сообщение отредактировал(а) korob2001 - 5.2.2006, 04:50


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rcdimon
Дата 5.2.2006, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Спасибо, сегодня проверю. Вечером отпишусь как прошло
PM MAIL ICQ   Вверх
rcdimon
Дата 5.2.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



У меня проблемы теперь с генерированием RSS.

пишу

Код

        $rss->add_item(
            title        => "$title",
            link        => "$link",
            pubDate        => "$date",
            description => "$desc",
                           webMaster      => "$master"    
        );


А в документе появляется

<item>
<title>1</title>
<link>http://1</link>
<description>1</description>
<pubDate>2006-02-05 23:47:25</pubDate>
</item>

То есть поля webMaster НЕТ! Вообще нет. И вообще никакие поля кроме остальных четырех не берет! А мне надо!

Даже в спецификации модуля пример без webMaster

Код

 $rss->add_item(title => "GTKeyboard 0.85",
        # creates a guid field with permaLink=true
        permaLink  => "http://freshmeat.net/news/1999/06/21/930003829.html",
                # alternately creates a guid field with permaLink=false
        # guid     => "gtkeyboard-0.85
        enclosure   => { url=>$url, type=>"application/x-bittorrent" },
        description => 'blah blah'
);


Откровенно мне это не нравится!!!!!!!

Подскажите как все же заставить его включить это поле в документ smile
PM MAIL ICQ   Вверх
sharq
Дата 8.2.2006, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



rcdimon
Цитата(rcdimon @ 5.2.2006, 22:53 Найти цитируемый пост)


То есть поля webMaster НЕТ! Вообще нет.

может переменная $master - undef или '' или 0?


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
rcdimon
Дата 10.2.2006, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Да нет... с ней все ОК smile
PM MAIL ICQ   Вверх
nitr
Дата 10.2.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Достаточно просто написать свой парсер типа XML::RSSLite, простой, на регулярных выражениях! Но выбор технологии за вами DOM или SAX, не забывайте что RSS всего лишь xml. Я к примеру, чтобы не заморачиваться писал свой на регулярных для бота IRC. Могу помочь, если надо, в написании вашего... Своим проще манипулировать, но могут возникнуть сложности, если вы хотите более или менее динамичный код...


--------------------
PM   Вверх
sharq
Дата 1.3.2006, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Вот только недавно появился модуль на CPAN'е - XML::RSS::LibXML.
Документация здесь.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Filin
Дата 25.1.2007, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 5.10.2006

Репутация: нет
Всего: нет



Цитата(nitr @  10.2.2006,  18:38 Найти цитируемый пост)
Достаточно просто написать свой парсер типа XML::RSSLite, простой, на регулярных выражениях! Но выбор технологии за вами DOM или SAX, не забывайте что RSS всего лишь xml. Я к примеру, чтобы не заморачиваться писал свой на регулярных для бота IRC. Могу помочь, если надо, в написании вашего... Своим проще манипулировать, но могут возникнуть сложности, если вы хотите более или менее динамичный код... 

Можешь поделится своим парсером ??? smile 
PM MAIL   Вверх
godson
Дата 8.4.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.11.2008

Репутация: нет
Всего: нет



Возникла проблема
парсю RSS 1.0 все ок 
начинаю парсить RSS 2.0
вываливается ошибка
Modification of non-creatable array value attempted, subscript -1 at /usr/lib/perl5/vendor_perl/5.8.8/XML/RSS.pm line 880.
парсю вот этот сайт http://kp.ua/rss.xml
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1943 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.