RSS с полным текстом новостей в Yahoo Pipes

Опубликовано в (Yahoo Pipes, Контент) | автор splogmaster | 12-12-2008

Тэги: , , , ,

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

Информацию об используемых модулях Yahoo Pipes можете получить в Описание модулей Yahoo Pipes

Для решения данной задачи в Yahoo Pipes нам понадобятся Основы парсинга html-страниц в Yahoo Pipes и модуль Loop. Подопытным кроликом будет некий блог Новости медицины, RSS-лента http://sarmednews.ru/?feed=rss2:

Yahoo_Pipes-Full_News_1

Мы вытащили на рабочий стол модуль Fetch Feed, указали в поле URL адрес RSS-ленты, и в Отладчике (Debugger) получили содержание этой RSS-ленты (кто не понимает, что он видит в Отладчике, читайте Структура формата RSS). Как видим, подэлемент Description содержит краткую версию новости (анонс) - нашей задачей является заменить содержимое подэлемента Description на полный текст конкретной новости. В подэлементе Link содержится ссылка на страницу с полным текстом новости - очевидно, нам нужно распарсить все страницы для каждой конкретной новости, получить полный текст новости, и заменить содержимое подэлемента Description на полученный контент с полным текстом новости. Для парсинга страниц нам нужен модуль Fetch Page. Для осущеествления цикла, в котором мы будем парсить все страницы, нам нужен модуль Loop:

Yahoo_Pipes-Full_News_2

Что мы сделали: для организации цикла перетащили на рабочий стол модуль Loop, внутрь модуля Loop (т.е. внутрь или в тело цикла) поместили модуль Fetch Page, в котором в качестве параметра URL указали item.url - как я уже сказал, именно здесь хранится ссылка на страницу с полным текстом новости. Поскольку вся страница нам не нужна (нам нужен только пост/новость), путем анализа исходного HTML-кода любой страницы с полным текстом новости мы определили признаки начала и конца поста/новости, эти признаки мы прописали в модуле Fetch Page в полях Cut content from (вырезать контент с) и to (по). И последнее: в модуле Loop мы указали, куда будут сохранятся результаты парсинга: мы выбрали assign (это значит, что результат парсинга будет включен в исходный поток данных) и указали в result to куда конретно будут сохранены результаты парсинга - в нашем случае это item.desciption. В Отладчике мы видим результат нашего парсинга: в item.desciption.0.content (0.content автоматически добавляется внутрь item.description, такова особенность работы цикла Loop) содержится кусок вырезанного контента со страницы с полным текстом новости - как видим, кроме самой новости туда еще попал всякий мусор, в данном случае это ссылки на схожие записи. Мусор нужно убрать с помощью модуля Regex. Для этого нам нужно ознакомится с исходным HTML-кодом результата прасинга, который можно увидеть в Отладчике перейдя на соответствующую вкладку source:

Yahoo_Pipes-Full_News_3

Мы видим мусор перед самим текстом новости и мусор после текста новости, уберем его модулем Regex, сперва переименовав item.desciption.0.content в item.desciption с помощью модуля Rename:

Yahoo_Pipes-Full_News_4

На этом, собственно, и все. Труба, которая из RSS-ленты с анонсами новостей делает RSS-ленту с полными текстами новостей, готова. Сравним исходную RSS-ленту http://sarmednews.ru/?feed=rss2 с полученной http://pipes.yahoo.com/pipes/pipe.run?_id=jlkgK1fI3RGlzYoVrbQIDg&_render=rss . А что делать с нормальной RSS-лентой написано в Создание сплогов на blogger.com (blogspot.com) и Создание сплога на движке wordpress .

Посмотреть исходный код созданной трубы и скопировать ее в свой аккаунт на Yahoo Pipes можно здесь http://pipes.yahoo.com/pipes/pipe.edit?_id=jlkgK1fI3RGlzYoVrbQIDg





Комментарии:

Оставить комментарий