Feed link parser


Будь мой блог не delphi блог и будь его адрес не parsers.info, я бы никогда не стал массово получать адреса rss лент со списка сайтов.

Программа консольная, использует модуль httpsend из библиотек synapse (Vlad рекомендует этот модуль, проверим?). Также пришлось подключать Classes, так как его использует httpsend, а так как мы его подключили, то и с записью в файл мудрить не будем — не такие у нас большие списки. Еще я подключил StrUtils, общий вес получился 136Kb, в общем, терпимо.

Немного о задачах программы. Вот у нас есть список очень интересных, к примеру, блогов. И у нас есть примитивный rss-ридер, который понимает только адреса на rss-ленту. Мы список блогов помещаем в sites.txt и запускаем программу. Всё! Немного ждём (с потоками я тоже не стал заморачиваться), и у нас есть заветный rss.txt — список лент. Ну и error.txt — там сайты, к которым не удалось подключиться и у которых не оказалось rss-лент.

Стоп. А как Feed link parser узнаёт адрес ленты? Всё просто, обычно лента прописывается в одном из тегов link раздела head страницы. Посмотри исходник сайта, если интересно, не будем вдаваться в подробности. (да, программа берет только первый адрес, это в случае нескольких таких тегов)

скачать feed link parser
скачать исходник feed link parser

(c) crystalbit, http://parsers.info

Постовой: Интереснейшие статьи о блогосфере читай на dofollow блоге ульяновского чувака.

19 ответов к «Feed link parser»

  1. И как прошла проверка? :) Я пока глюков не встретил в библиоеке. Непривычно конечно немного после Indy использовать Synapse, но мне нравиЦЦО

    1. Единственное, что напрягло, так это то, что HttpGetText в параметре требует TStrings, да и сама библиотека использует Classes и SysUtils, что не очень выгодно в консольных приложениях, 136Кб многовато. Хотя тому же indy до этого ой как далеко. Я к тому, что если библиотека основана на сокетах, могло бы быть и на чистом api^^
      В общем, это единственное, к чему я на данный момент смог придраться :)

          1. а я уже понадеялся, что напишу две строчки, и программа станет многопоточной :)
            на моей памяти winapi 1.1 совместимо с linux, разве нет?

          2. А вот фиг знает — совместимо или нет. в Wiki Lazarus чётко было сказано, что WinAPI никаким макаром не применим в Лазаре под Линуксом. Надо проверить как-нибудь самому

          3. По идеи он не может быть совместим хотя бы по тому, что win-api это виндовый прибомбас. В линуксе его нет, ну разве что wini.

          4. Не, тут речь немного не о том. Не в том дело, что в Линухе вдрук бац и выполз целый модуль прям как в винде и с под винду заточеный. Нет. Просто могут быть аналогичные функции, например схожие по названию, параметрам и т.д. Как например модули Windows и Unix — применяются в разных ОС, а имена и параметры функций 1 в 1. Просто я таих не встречал — сразу полез в синапс да там и остался

  2. хм… как вам такое?

    $ cat feed_parser.sh
    #!/bin/sh
    URI_LIST=sites_list.txt
    FEED_LIST=feed_list.txt
    
    cat ${URI_LIST} | while read URI
     do 
      echo "GET " ${URI}
      curl ${URI} | grep rss+xml | awk -F'"' '{print $8}' >> ${FEED_LIST}
     done
    exit 0
    
        1. RegExp — сила, согласен. Многопоточность? На delphi это тоже не так уж и сложно. Прикручу потом.
          Для меня написание всегда было на втором плане, вот идея хорошей и нужной программы, хорошего и нужного поста — вот в этом часто проблема.

  3. Забавно. Получился агрегатор RSS, подшлифуйте и можно будет коммерческую версию делать для КПК. А что, хороший агрегатор я бы купил.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *