使用Delphi获取全文源

时间:2011-08-07 03:37:24

标签: delphi http rss feed full-text-search

我正在开发一个Delphi程序,通过组件Indy idHTTP读取Feed的来源..但是Feed看起来不完整,只显示其摘要,我的意思是Feed没有显示“content”标签。

我认为可以获得全文供稿,因为我在互联网上找到了一些可以显示全文供稿的网站(即使是仅显示摘要的供稿)。 / p>

如何通过Delphi阅读全文Feed,我该怎么办? 是否有特定的Delphi组件可以执行此操作,还是可以使用idHTTP执行此操作?

非常感谢任何帮助

谢谢大家!

3 个答案:

答案 0 :(得分:5)

  1. 除了Indy之外,Delphi还有其他内置的TCP / IP控件。尝试一个,看看你是否得到不同的结果。即使作为实验,它也只需要大约30秒(拖放组件到表单上,设置URL,获取结果,看看你得到了什么)。正确的吗?

  2. 如果相关网站没有为您提供全文供稿,我不知道任何Delphi组件会自动为您提供。这里有一些关于某些启发式方法的好链接,可以从部分RSS内容中自行获取:

    How to programmatically determine whether an RSS feed is a full feed or a partial feed

    使用Delphi解析RSS的教程:

    Reading and manipulating XML files with Delphi

  3. 最后,似乎有很多网络应用程序可以为您获取全文RSS:

    http://fulltextrssfeed.com/feed.php

    http://www.fullrssfeed.com/

    http://www.unsum.com/converter

    也许您可以将其中一项服务集成到您的应用中?

答案 1 :(得分:2)

似乎当RSS / Atom提要没有全文内容时,获取它的方法是进入提要的URL,并通过innerHTML / outerHTML提取全文。请参阅下面一个很好的例子:

PHP来源(AGPL v3许可证): http://code.fivefilters.org/p/full-text-rss/source/tree/master/

我可以在Delphi上做到这一点,虽然这需要一些时间才能完成。 另一方面,正如Paulsm4所述,将这些服务中的一个集成到您的应用程序中可能会很好。

所以..井..现在我想在我的应用程序中提供两种选项(获取全文和集成的逻辑)。 :)

答案 2 :(得分:1)

对于许多Web应用程序,从Web服务器返回的文档可能依赖于HTTP GET请求中的其他标头,例如Accept标头。

默认情况下,Indy会将其设置为text/html, *.*

尝试将其设置为application/rss+xml,然后服务器应回复完整的RSS内容:

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