Где-то пол года назад делал что то подобное для своих саттелитов. Алгоритм использовался достаточно простой и вместе с тем эффективный. В двух словах:
1. Чистим документ от всего лишнего, комментарии, скрипты, атрибуты, вообщем все кроме абзацев, tr (либо td) и дивов.
2. Дальше разбиваем все это дело в массив используя разделитель либо див либо td (или tr). (В этом месте автоматизации добиться не удалось, поэтому для каждой ленты я указывал какая это верстка)
3. Подсчитывалось количество русских букв в каждом элементе. В каком элементе массива букв оказалось больше тот и победил )).
А дальше мы его прогоняем через tidy и вуаля, наш контент готов.
На самом деле тут последовательно используются три не связанных друг с другом алгоритма. Два из которых довольно очевидны, а третий создан по мотивам похожего по назначению перлового модуля.
Правильно ли я понял, что алгоритм действий таков: для каждого движка сайта надо создать свой алгоритм извлечения информации, свой Yahoo! Pipe, после чего для каждого нового сайта перебирать пайпы, пока не попадётся подходящий, либо создать новый.
Да, это будет стабильно, ибо предполагает ручную работу для каждого сайта. Но вы действительно полагаете, что это проще заявленных в посте даппера с 43feeds (тоже предполагающих ручную работу)? Не говоря уж про мой сервис с единственным полем ввода.
Любую такую систему надо подпиливать, чтоб получить хороший результат. Если устраивают фиды с косяками — то можно и тут всё сделать на автомате.
Я попоробовал, скормил вашей системе первый попавшийся блог (www.maxss.info/feeds/posts/default):
1) она завалилась на RSS-е, смогла обработать только Atom. RSS — с фидбурнера.
2) поломались картинки.
3) криво вырезаются теги. Пример — «Чайна Мьевилл „Вокзал потерянных снов“» вот тут: feedex.net/feed/www.maxss.info/feeds/posts/default
Вот пример для этого блога на яху пайпс: pipes.yahoo.com/pipes/pipe.info?_id=8ff752442f0d1b9991e2b6a8bb4f9dbe
Времени ушло — минут 10, максимум. Картинки есть, режется всё чисто. Что еще надо?
Мало того, sub pipe, который выкачивает записи, он подходит к практически любому вордпресс-бейзд блогу. Добавить новый блог — нажать clone, edit и указать новый url. Feed discovery кстати тоже работает.
А ответ на вопрос почему я таки сам пользуюсь своим сервисом а не дапперами или яхами — всё тот же. Лениво писать (пусть и по 10 минут на каждый) экстракторы под каждый фид. Плюс обновлять оные в случае смены дизайна сайта-донора.
А главное — на тех фидах, которые нужны мне, мой сервис работает практически без замечаний ;o)
По части же точного (ручного) указания сервису, какой блок данных следует извлекать, у меня есть следующая идейка. Я набросал сайтик pagemon.net (в настоящее время работает только под Firefox и, полагаю, Opera), где подобный выбор осуществляется визуальным образом (а не поиском в html-коде уникальной последовательности символов). Думаю, со временем можно будет прикрутить тамошнюю блоко-выбиралку к feedex`у, благодаря чему появится (опциональная!) возможность легко и просто объяснить сервису где он не прав.
Движков и темизаций слишком много. Затачиваться специально на каждый мне показалось лениво. Поэтому покамест используется именно, что общий алгоритм. Который может извлекать как посты с блога на друпале, так и, скажем, комиксы с www.phdcomics.com ;o)
Сейчас использую Google Reader с greasemohkey-дополнением Preview — мне удобно.
А вот Ведомости (http://www.vedomosti.ru/) забрать не удалось. Пробовал также через Yahoo Pipes совместить хотя 3 ленты в одну —не вышло из-за нестандартной кодировки (win-1251 Яху понимать отказался)
Спасибо.
Было бы очень хорошо, если бы для сложившихся сайтов (ЖЖ, например) скрипт знал местоположение потока, т. е. например smths.livejournal.com автоматом превращалось в smths.livejournal.com/data/rss
Гм… как минимум используя firefox+mozrepl можно сделать принципиально непобедимый снаряд с сумасшедшим оверхэдом, думаю, запуск такого снаряда можно будет сравнить с ядерной атакой :-D
> Гм… как минимум используя firefox+mozrepl можно сделать принципиально непобедимый снаряд с
> сумасшедшим оверхэдом, думаю, запуск такого снаряда можно будет сравнить с ядерной атакой :-D
Почти непобедимый, да. Но тяжелый и не очень удобный в обращении. Я успешно использовал подобный метод против сайтов, практикующих Javascript шифрование текстов. Думал даже сделать javascript-enabled-proxy (http-proxy, которая выдаёт страницы с уже отработавшими onLoad и им подобным javascript`ами), но поленился.
И против подобного, разумеется, тоже можно бункер построить. Как, впрочем, и разработать ещё более хитрый снаряд.
Я, если честно, очень плохо себе представляю, как без активного взаимодействия с пользователем построить бункер супротив такого снаряда. А просить вводить капчу для того, чтоб прочитать текст — форменный фашизм.
> Я, если честно, очень плохо себе представляю, как без активного взаимодействия с пользователем
> построить бункер супротив такого снаряда.
Ну, lleo, скажем, использует клоакинг супротив IP-адреса моего (и ещё многих) сервера. Это, конечно, легко обходится.
Можно придумать ещё много характеризующих признаков, по которых и баннить. Да, тогда легко могут пострадать невиновные люди (скажем, я теперь не могу использовать этот свой сервер в качестве прокси при просмотре дневника lleo, получилась забавная ситуация — я могу его читать в гугл-ридере, но не могу читать его на его же собственном сайте).
> А просить вводить капчу для того, чтоб прочитать текст — форменный фашизм.
Да, разумеется. Но это бы сработало на некоторое время.
Это не русскоязычный сайт. Он мультиязычный. Не будь вы русским, сайт бы разговаривал с вами на английском. Я посчитал, что никому кроме англоговорящих всяческие соглашения тосы и тому подобные бумажки в принципе не интересны.
Я бы даже уточнил — успешно обработанных лент. С результатом, удовлетворившего пользователя.
Тех лент, в которых отсутствуют лишнее и ненужное, не относящееся к новости.
Таким образом, проще было бы забирать полные и качественные фиды.
Признаться, я бы отметил.
Я уже второй раз пользовался этим сервисом. И во второй раз, скопом переводя все свои подписки, выявил, что половину лучше оставить такими, как и раздает их «официальный» источник. Так, например, неоднозначно были обработаны rss Коммерсанта, Автокадабры, Главбуха… да и Хабрхабр, увы, не идеален. Допускаю, что в этом может быть и вина ридера (в основном я в последнее время читаю rss на коммуникаторе под WM).
тогда не лучше ли воспользоваться любым из упонянутых на сайте средств обратной связи и сообщить мне о каждой конкретной проблеме? Возможно, я как-нибудь в очередной раз перепишу алгоритм извлечения, учтя выявленные недостатки текущего.
По «списку удачных фидов» я всё ещё не понял. Вы бы свои подписки действительно бы стали искать в подобном списке, вместо того что бы просто ввести адрес в форму и посмотреть, что получится? А что стали бы делать с теми фидами, которые в списке не нашли (скажу по секрету, редкий фид у меня запрашивается более, чем одним пользователем)?
FeedEx: расширяем фиды в один клик