0

我正在使用SimplePie,它让我很头疼。首先,让我解释一下我要做什么。我正在为其创建网站的朋友已经有博客,其中的帖子并不多,我想从那里加载所有项目,解析它们并在标签正确时显示它们。当SimplePie没有加载整个提要但限制为 25 时,问题就开始了。根据这个SO question,默认限制是 10,我还使用 Google Chrome 扩展程序检查了提要,在那里我获得了整个博客内容。澄清一下,这些项目没有被缓存(好吧,实际上它们是)但仍然存在于博客上,所以它们没有被删除,我也没有得到旧内容。另外,我下载了 feed url 并在记事本中打开它,里面有 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 加载博客中的所有内容?我应该只是“foreach($feed-> get_items(0,10000) as $item):”来加载所有内容并保证终生安全吗?
  • 还有其他更适合我需要的 Atom 解析器吗?任何建议都是最受欢迎的。
  • 为什么我下载的默认文件中的内容是按标签排序的,标签是空的,但是该术语有正确的关键字?

谢谢您的帮助。

4

1 回答 1

0

另外,我下载了 feed url 并在记事本中打开它,里面有 25 个项目。

这就是 SimplePie 无法加载更多项目的原因;那里没有给出任何东西。SimplePie(或任何其他解析器)只能获取提要中的内容。

如果您想要更多项目,您可以尝试使用 Google 的提要 API(他们使用来自 Google Reader 的缓存数据,因此他们应该拥有每个项目)。(另一个答案实际上是不正确的,因为它不限于 10 个项目;这只是在 NewsBlocks 示例代码中。)或者,在网站上四处挖掘,看看你是否能找到一种方法来对提要进行分页。

根据您在下面的评论,您应该能够附加?max-results=1000到任何 Blogger 供稿以获得 1000 个项目。这是特定于 Blogger 的,但大多数网站都有类似的东西。

于 2012-10-15T02:40:20.780 回答