2016-08-30 5 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

Было бы невероятно полезно, если бы вы предоставили тело ответа, которое вы получили, когда это произойдет; скорее всего, вы получили сообщение об ошибке.

Я не знаю, вызвано ли это тем, почему вы столкнулись с ошибкой, но ваш подход имеет две проблемы, с которыми вы столкнетесь рано или поздно.

Первое, что за the API rules, вероятно, вы должны быть аутентифицированы как приложение и должны указывать пользовательский агент; иначе вы будете сильно задушены. Вероятно, вы сейчас получаете 429, но не проверяете их.

Во-вторых, перечисление страниц на reddit охватывает только 1000 предметов, поэтому вы не сможете напрямую извлечь из них 10 000 предметов. Если вам действительно нужны 10 тыс. Предметов, у вас есть два основных варианта:

  1. Сбор данных по 1000 предметов за раз в течение определенного периода времени.
  2. Получите действительно фантазию с поиском api и timestamps, чтобы получить много фрагментов данных, которые вы можете объединить вместе.

Вы не указали, почему вам нужны эти данные (или почему вам нужны 10 000 образцов), но если вы просто ищете список красноватых сообщений, на которых можно выполнить некоторый анализ, другие люди создали данные наборы posts и comments.