![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Хочу сделать новости на своем сайте.
Интересующие меня новости существуют в формате RSS. Я читал что это оч удобно. Но на практике заметил скорее обратное! Существует только 1 модуль для парсинга RSS. И он НЕ поддерживает RSS 2.0! Ему нужны файлы с разными кодировками. Если их нет- прога завершается с 500 ошибкой сервера. Если в теле RSS документа есть ошибка- не соблюден синтаксис- парсер так же завершается с ошибкой! А мне надо что бы все было стабильно! Подскажите, пожалуйста, как организовать парсинг RSS. |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Есть такой тестовый код
Которвый в принципе то работает! Но оочень глюкаво. если файл RSS маленький И в нем не много элементов <item> то он с ним спокойно справляется. Но когда этих элемнтов штук 30! Она просто зависает! А когда я к print "title: $item->{'title'}<br>"; print "link: $item->{'link'}<br>"; добавляю еще print "text: $item->{'description'}<br>"; ТО она вешается уже на 8-и элементах! Если что, то комп на котором проходят тестирования мощный- Dual Xeon 3.0 с 1 гигом ОЗУ. Так что просто тормозить эта штука не может! Вот и хотелось бы понять в ЧЕМ ДЕЛО?! ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|||
|
||||
Usya |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 7.6.2005 Репутация: нет Всего: нет |
А если самому написать соответствующую процедурку?
Формат *.rss файла, в принципе, не сильно мудреный. --------------------
Я не волшебник, я только учусь... |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Ну да...
![]() Как тебе вот такая? ![]()
|
|||
|
||||
sharq |
|
||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon
На счет одного модуля для RSS на CPANе ты глубоко заблуждаешься, смотри. На счет модуля XML::RSS - это очень мощный модуль, читай внимательно документацию по модулю. ВОт пример из SYNOPSIS:
Очевидно, что модуль поддерживает многие версии RSS, в том числе 2.0. Если тебе по каким-то причинам не устраивают готовые модули, то дерзай XML::Parser и обрабатывай ту версию, кот. тебе действительно необходима. ![]() Добавлено @ 13:45 а может твой скрипт не может получить rss, попробуй обрабатывать локальные rss-файлы (через parsefile), а когда заработает уже пробуй с удаленными. -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||
|
|||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
Для твоей задачи лучше использовать модуль XML::RSS::Parser::Lite, очень прост в использовании.
![]() Это сообщение отредактировал(а) sharq - 4.2.2006, 15:50 -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
С локальным файлом тоже самое
![]() А версии мне необходимы все А задача у меня очень большая. Мне не только ссылку, описание и заголовок нужен. Мне нужно жестоко парсить 100% файла. Добавлено @ 15:13 RSS 2.0 этот модуль действительно поддерживает. Но мне от этого не легче! Он виснет! Это сообщение отредактировал(а) rcdimon - 4.2.2006, 15:08 |
|||
|
||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon посмотри содержание $rp, там все есть.
0.9, 0.91, 1.0, 2.0 - мало? тогда пиши свой парсер RSS. ![]() -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
НЕТ! Мне этого не мало! Мне нужно что бы он стабильно работал! Других жалоб НЕТ НА НЕГО!
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|||
|
||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
привиди пример rss и скорей всего виснет у тебя из-за того, что скрипт не может получить файл http://192.168.0.33/temp/yandex.rss. ![]() -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Писать своя парсер непредставляется возможным! Этот тоже не дураки писали! А время, выделенное под проект у меня жестоко ограничено
Добавлено @ 15:56 Я уже исправил давно как ты сказал это на $rss->parsefile('kinder.rss'); Пичем получить к нему доступ он может! ПОтому что он выводит на экран отпарсенные данные! Но останавливается на непоследнем элементе. При этом браузер не перестает загружать. думая что данные будут еще передаваться. Но тем не менее сколько бы я не ждал новых данных не появляется. Добавлено @ 16:00 вот с таким RSS он виснет уже где-то на 30-50 новости
Большую часть файла пришлось вырезать. потому что форум не давал запостить такую большую мессагу |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Это наш винградовский ![]() |
|||
|
||||
sharq |
|
||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon
вот тебе два варианта
Выбирай сам, какой вариант использовать. ![]() -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||
|
|||||
rcdimon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Нет. Он без ошибок! Я имел в виду что он сложный и самодельный парсер под него не написать.
Я же говорю что использую второй! Эти кодировки на XML я поставил! Так вот я его и использую! НО ОН ВИСНЕТ! Ну что такое а.... ![]() ![]() ![]() |
||||
|
|||||
sharq |
|
||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon ты издеваешься?
Запусти оба примера, которые я тебе привел у себя и не через CGI, а через консоль и посмотри. У меня они работают. Теперь на счет перекодировки. Вот тебе CGI-скрипт, для разбора rss и вывода на страницу title и description (можешь вывести все остальное):
Все работает, не зависает и переконвертирует самостоятельно, вот html-код:
1.rss - это rss yandex'а, который ты привел. B прикрепи к сообщению полный rss. ![]() Это сообщение отредактировал(а) sharq - 4.2.2006, 17:34 -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||
|
|||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Гы... КОнсоль это безусловно хорошо... только работать должно в вебе под управлением апача
![]() Добавлено @ 17:51 Да. В консоли действиеительно работает! Так в чем же тогда может быть дело? |
|||
|
||||
sharq |
|
|||
![]() 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] |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Удивительно... но лог апача пуст. От того что тот модуль вешается или чешается что-то еще ошибок апач не фиксирует! Но одно могу сказать точно. В памяти компа остаются незавершенные процессы перла и апача. Даже после остановки севрера
|
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Измени значение переменной $mirror_dir и запусти следующий код:
У меня парсит. Это сообщение отредактировал(а) korob2001 - 5.2.2006, 04:50 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Спасибо, сегодня проверю. Вечером отпишусь как прошло
|
|||
|
||||
rcdimon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
У меня проблемы теперь с генерированием RSS.
пишу
А в документе появляется <item> <title>1</title> <link>http://1</link> <description>1</description> <pubDate>2006-02-05 23:47:25</pubDate> </item> То есть поля webMaster НЕТ! Вообще нет. И вообще никакие поля кроме остальных четырех не берет! А мне надо! Даже в спецификации модуля пример без webMaster
Откровенно мне это не нравится!!!!!!! Подскажите как все же заставить его включить это поле в документ ![]() |
||||
|
|||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon
может переменная $master - undef или '' или 0? -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Да нет... с ней все ОК
![]() |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Достаточно просто написать свой парсер типа XML::RSSLite, простой, на регулярных выражениях! Но выбор технологии за вами DOM или SAX, не забывайте что RSS всего лишь xml. Я к примеру, чтобы не заморачиваться писал свой на регулярных для бота IRC. Могу помочь, если надо, в написании вашего... Своим проще манипулировать, но могут возникнуть сложности, если вы хотите более или менее динамичный код...
|
|||
|
||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
Filin |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 5.10.2006 Репутация: нет Всего: нет |
Можешь поделится своим парсером ??? ![]() |
|||
|
||||
godson |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |