Невозможно получить доступ к неэкранированному html в ленте RSS - PullRequest
1 голос
/ 30 ноября 2010

Я использую встроенные возможности RSS в Ruby (RSS :: Parser.parse) в новом приложении rails.Приложение читает несколько различных источников RSS-каналов, которые находятся вне моего контроля (общедоступные, созданные другими).Один из каналов, к которым я пытаюсь получить доступ, содержит неэкранированный html в своих полях описания в коллекции элементов.Я могу получить доступ к каналу, но когда я пытаюсь получить доступ к полю описания в моем представлении, кажется, что там ничего нет.Сначала я подумал, что мне нужно использовать необработанный помощник, но конечный результат тот же.Есть ли какой-то особый способ, которым мне нужно запросить данные или получить к ним доступ в представлении?Код в моем контроллере выглядит следующим образом:

@recent_activity = RSS::Parser.parse(open('http://someurl').read, false)

Код, на мой взгляд, следующийобойти объект RSS, но я пытаюсь выяснить, могу ли я что-то сделать с объектом RSS, прежде чем идти по этому маршруту.

Заранее спасибо за любую помощь или предложения.

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

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

feedtools

feedparser

Большая проблема, которую вы обнаружите, заключается в том, что ни один пакет не будет делать все это правильно, потому что люди, создающие каналы, чертовски изобретательны. В полях описания и заголовка вы найдете все виды дьявольского текста, HTML, а также кодированные и незашифрованные данные. В итоге я написал свой собственный парсер и использовал Nokogiri для управления тяжелой работой, с некоторой помощью от loofah для удаления определенных нежелательных тегов. Я разбирал около 1000 различных фидов с разными интервалами, используя базу данных для отслеживания последнего доступа, etags и совершая все праведные действия, такие как не избиение сайтов до смерти, если у них не было ничего нового, и почитание их " не беспокойте меня между этими настройками часов или дней.

1 голос
/ 30 ноября 2010

Вместо RSS::Parser попробуйте совершенно потрясающий feedzirra.Я использую его в приложении, которое загружает около 200 различных каналов без каких-либо проблем.О, и он использует Nokogiri, поэтому он также быстр.

Описание FeedZirra: Библиотека выборки и анализа каналов, которая обрабатывает Интернет, как Годзилла, относится к Японии: она доминирует и ест всех.1009 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...