2016-08-30 9 views
0

私はこのコードを使ってreddit.comの投稿からデータを取得しています...これは1500の投稿までうまくいきます(10000のデータを取得する必要があります)。それは言って、エラーをredditのデータ収集がPHPループの途中で終了する

array_merge()を得る:引数#1は

このエラーは、私が書いている行からトリガー配列ではありませんarray_merge

コード

<?php 
$count = 0; 
for($digit=0; $count<2001; $digit+=1){ 

     $jsondata = trim(file_get_contents("http://www.reddit.com/new/.json?count=$count&limit=100")); 

     $json = json_decode($jsondata, true); 

     $postdata[$digit] = $json['data']['children']; 
     $mergedArray = array_merge($mergedArray, $postdata[$digit]); 

     } 

     foreach($mergedArray as $livedata){ 

      $output .= $livedata["data"]["ups"].", "; 
      $output .= '"'.$livedata["data"]["title"].'", '; 
      $output .= $livedata["data"]["id"].", "; 
      $output .= $livedata["data"]["num_comments"].", "; 
      $output .= $livedata["data"]["domain"]."\n\r"; 
      $output .= "<br />"; 

     } 
     echo $output; 
     ?> 

どのような身体でもエラーを見つけて、私が10000の投稿を途切れないようにする方法を教えてください

+0

誰か助けてくださいね?? –

答えて

1

これが起こったときにあなたが受け取ったレスポンスボディを提供すると、それは非常に役に立ちます。エラーメッセージが表示されている可能性があります。

今はエラーに遭遇しているのかどうかわかりませんが、あなたのアプローチには遅かれ早かれ実行する2つの問題があります。

最初は、the API rulesによると、おそらくアプリケーションとして認証されていて、ユーザーエージェントを指定する必要があります。さもなければ、あなたは大きく絞られます。合理的にあなたは429を受け取っているでしょうが、それをチェックしていません。

第2に、redditのリスティングページは1,000アイテムしかカバーしないため、それらから10,000アイテムを直接取得することはできません。実際に10k個のアイテムが必要な場合は、2つの主要な選択肢があります。

  1. 一定期間に一度に1000個ずつデータを収集します。
  2. 検索apiとタイムスタンプで本当に気に入って、一緒にピースできるデータのスライスをたくさん取得してください。

このデータが必要な理由(または10,000サンプルが必要な理由)は指定されていませんが、分析を行うためのレッドダイジェストの選択肢を探しているだけの場合は、 postsおよびcommentsのセット。

関連する問題