我正在开发一个Delphi程序,通过组件Indy idHTTP读取Feed的来源..但是Feed看起来不完整,只显示其摘要,我的意思是Feed没有显示“content”标签。
我认为可以获得全文供稿,因为我在互联网上找到了一些可以显示全文供稿的网站(即使是仅显示摘要的供稿)。 / p>
如何通过Delphi阅读全文Feed,我该怎么办? 是否有特定的Delphi组件可以执行此操作,还是可以使用idHTTP执行此操作?
非常感谢任何帮助
谢谢大家!
答案 0 :(得分:5)
除了Indy之外,Delphi还有其他内置的TCP / IP控件。尝试一个,看看你是否得到不同的结果。即使作为实验,它也只需要大约30秒(拖放组件到表单上,设置URL,获取结果,看看你得到了什么)。正确的吗?
如果相关网站没有为您提供全文供稿,我不知道任何Delphi组件会自动为您提供。这里有一些关于某些启发式方法的好链接,可以从部分RSS内容中自行获取:
How to programmatically determine whether an RSS feed is a full feed or a partial feed
使用Delphi解析RSS的教程:
最后,似乎有很多网络应用程序可以为您获取全文RSS:
http://fulltextrssfeed.com/feed.php
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);
...