Получите полнотекстовый канал с Delphi - PullRequest
4 голосов
/ 07 августа 2011

Я разрабатываю программу на Delphi, которая читает источник канала через компонент Indy idHTTP ... но канал не отображается полностью, отображается только его сводка, я имею в виду, что канал не показывает тег "content".

Я думаю, что возможно получить полнотекстовые каналы, потому что я нашел некоторые сайты в Интернете (например, http://fulltextrssfeed.com/), которые могут отображать полнотекстовые каналы, даже для каналов, которые показывают только сводку.

Что я должен сделать, чтобы читать полнотекстовый фид через Delphi? Есть ли определенный компонент Delphi для этого или я могу сделать это с помощью idHTTP?

Любая помощь будет очень высоко ценится

Спасибо вам всем!

Ответы [ 3 ]

5 голосов
/ 07 августа 2011
  1. Delphi имеет другие встроенные элементы управления для TCP / IP, кроме Indy. Попробуйте один и посмотрите, если вы получите другие результаты. Даже в качестве эксперимента это займет всего около 30 секунд (перетащите компонент на форму, задайте URL-адрес, получите результаты и посмотрите, что вы получите). Правильно?

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

    Как программно определить, является ли RSS-канал полным или частичным

    И учебник по разбору RSS, используя Delphi:

    Чтение и управление файлами XML с помощью Delphi

  3. Наконец, существует целый ряд веб-приложений, которые МОГУТ получить для вас полнотекстовый RSS:

    http://fulltextrssfeed.com/feed.php

    http://www.fullrssfeed.com/

    http://www.unsum.com/converter

    Возможно, вы сможете интегрировать один из этих сервисов в свое приложение?

2 голосов
/ 09 августа 2011

Похоже, что когда в RSS / Atom-фиде нет полнотекстового содержимого, способ получить его - перейти к URL-адресу фида и извлечь полный текст с помощью innerHTML / outerHTML. Ниже приведен хороший пример:

Исходники PHP (лицензия AGPL v3): http://code.fivefilters.org/p/full-text-rss/source/tree/master/

Я мог бы сделать это на Delphi, хотя на это потребуется некоторое время .. С другой стороны, как сказал выше Paulsm4, может быть полезно интегрировать один из этих сервисов в ваше приложение.

Так что ... хорошо ... пока я думаю предоставить в моем приложении обе опции (логику для получения полнотекстового кода и интеграцию). :)

1 голос
/ 07 августа 2011

Для многих веб-приложений документ, возвращаемый с веб-сервера, может зависеть от дополнительных заголовков в запросе HTTP GET, например, заголовка Accept.

По умолчанию Indy установит значение text/html, *.*.

Попробуйте установить значение application/rss+xml, затем сервер должен ответить с полным содержанием RSS:

...
IdHTTP1.Request.Accept := 'application/rss+xml';
Response := IdHTTP1.Get(url);
...
...