从一个Atom RSS提要加载所有项目

时间:2012-10-14 22:12:02

标签: php atom-feed simplepie

我正在使用SimplePie,这让我很头疼。首先,让我解释一下我正在尝试做什么。 我的朋友,我正在建立一个网站,已经有博客,帖子不多,我想从那里加载所有项目,解析它们,如果标签是正确的,显示它们。当SimplePie未加载整个Feed但限制为25时问题就开始了。根据此SO question,默认限制为10,我还检查了使用Google Chrome扩展程序的Feed整个博客内容。并且澄清一下,这些项目没有缓存(好的,实际上它们都是)但仍然存在于博客上,所以它们没有被删除,我也没有得到旧的内容。 此外,我下载了提要网址,并在记事本中打开,有25个项目。

这是我的init()代码示例:

 require_once("php/autoloader.php");
 $feed=new SimplePie();
 $feed->set_feed_url("http://jadran303.blogspot.com/feeds/posts/default");
 $feed->enable_cache(false);
 $feed->init();
 $feed->handle_content_type();

这是我的代码,用于测试结果并查看我得到的内容(这不是生产版本):

$i=1;$j=1;$k=1;
foreach($feed->get_items() as $item):
 echo$k." ".$item->get_title()." - ".$item->get_date('j F Y, g:i a')."<br />";
 if($category=$item->get_category()){
  echo$j". ".$item->get_title()." - ".$category->get_label()." - ".$category->get_term()."<br />";
  if($category->get_label()=="Peugeot 406 Coupé na terenu"){
   echo" - $i ".$item->get_title()."<br />";
   $i++;
  }
  print_r($category);
  $j++;
 }
 $k++;
endforeach;

我的问题:

  • 如何强制SimplePie加载博客中的所有内容?我应该“预先($ feed-&gt; get_items(0,10000)作为$ item):”加载所有内容并保持一生安全吗?
  • 还有其他任何Atom解析器更适合我的需求吗?任何建议都是最受欢迎的。
  • 为什么内容按标签排序,即使在我下载标签的默认文件中也是空的,但术语是否有正确的关键字?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

另外,我下载了提要网址,并在记事本中打开,有25个项目。

这就是SimplePie无法加载任何物品的原因;那里没有任何东西。 SimplePie(或任何其他解析器)只能获取Feed中的内容。

如果您想要更多商品,可以尝试使用Google的Feed API(他们使用来自Google阅读器的缓存数据,因此他们应该拥有所有商品)。 (另一个答案实际上是不正确的,因为它不仅限于10个项目;这只是在NewsBlocks示例代码中。)或者,在网站上挖掘并查看是否可以找到分页Feed的方法。 < / p>

根据您在下方的评论,您应该可以将?max-results=1000附加到任何Blogger Feed,以获取1000个项目。这是Blogger特有的,但大多数网站都有类似的东西。