0

SimplePieを使用していますが、頭痛の種になります。まず、私がやろうとしていることを説明しましょう。私がウェブサイトを作っている私の友人は、すでにそれほど多くの投稿がないブログを持っていて、そこからすべてのアイテムをロードし、それらを解析して、ラベルが正しい場合はそれらを表示したいと思います。SimplePieがフィード全体をロードせず、25に制限すると、問題が発生します。このSOの質問によると、デフォルトの制限は10であり、ブログコンテンツ全体を取得したGoogleChrome拡張機能でフィードも確認しました。明確にするために、アイテムはキャッシュされていませんが(OK、実際にはキャッシュされています)、ブログに引き続き公開されているため、削除されず、古いコンテンツを取得していません。また、フィードの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

また、フィードのURLをダウンロードしてメモ帳で開きました。25個のアイテムがあります。

SimplePieがこれ以上アイテムをロードできないのはそのためです。そこには何も与えられていません。SimplePie(またはその他のパーサー)は、フィードに含まれるもののみを取得できます。

より多くのアイテムが必要な場合は、GoogleのフィードAPIを使用してみてください(Googleリーダーからキャッシュされたデータを使用するため、すべてのアイテムが含まれている必要があります)。(他の答えは、10アイテムに制限されていないため、実際には正しくありません。これは、NewsBlocksのサンプルコードに含まれています。)または、サイトを調べて、フィードをページ分割する方法を見つけることができるかどうかを確認します。

?max-results=1000以下のコメントにあるように、Bloggerフィードに追加して、代わりに1000個のアイテムを取得できるはずです。これはBloggerに固有ですが、ほとんどのサイトに似たようなものがあります。

于 2012-10-15T02:40:20.780 に答える