2016-07-05 10 views
1

Ich bin auf der Suche nach den Titeln aller Beiträge auf einem Subreddit, und ich wollte wissen, was wäre der beste Weg zu gehen Dies?Was wäre der beste Weg, um die Titel (in Masse) eines Subreddits zu sammeln

Ich habe mich umgesehen und ein paar Sachen über Python und Bots gefunden. Ich habe mir auch die API kurz angeschaut und bin unsicher, in welche Richtung ich gehen soll.

Da ich mich nicht dazu verpflichten will, 90% des Weges herauszufinden, wird es nicht funktionieren, ich frage, ob jemand mich in die richtige Richtung der Sprache und Extras wie jede benötigte Software zum Beispiel pip für Python zeigen könnte .

Meine eigene Erfahrung ist in Web-Sprachen wie PHP, so dass ich zunächst dachte, eine Web-App würde den Trick tun, aber bin mir nicht sicher, ob dies der beste Weg wäre und wie es geht.

So wie meine Frage steht

Was ist der beste Weg wäre, um die Titel zu sammeln (in bulk) ein subreddit?

Oder wenn das auch subjektiv

Wie kann ich abrufen und speichern die alle Post-Titel eines subreddit?

muss vorzugsweise auf:

  • mehr als 1 Seite von (25) tun Ergebnisse
  • speichern in eine .txt-Datei

Vielen Dank im Voraus.

+0

Die API ist der Schlüssel hier, nicht die verwendete Sprache. Schauen Sie in die API, um sicherzustellen, dass die gewünschten Daten zurückgegeben werden können. –

Antwort

1

PHP; in 25 Zeilen:

$subreddit = 'pokemon'; 
$max_pages = 10; 

// Set variables with default data 
$page = 0; 
$after = ''; 
$titles = ''; 
do { 
    $url = 'http://www.reddit.com/r/' . $subreddit . '/new.json?limit=25&after=' . $after; 

    // Set URL you want to fetch 
    $ch = curl_init($url); 

    // Set curl option of of header to false (don't need them) 
    curl_setopt($ch, CURLOPT_HEADER, 0); 

    // Set curl option of nobody to false as we need the body 
    curl_setopt($ch, CURLOPT_NOBODY, 0); 

    // Set curl timeout of 5 seconds 
    curl_setopt($ch, CURLOPT_TIMEOUT, 5); 

    // Set curl to return output as string 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    // Execute curl 
    $output = curl_exec($ch); 

    // Get HTTP code of request 
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

    // Close curl 
    curl_close($ch); 

    // If http code is 200 (success) 
    if ($status == 200) { 
     // Decode JSON into PHP object 
     $json = json_decode($output); 
     // Set after for next curl iteration (reddit's pagination) 
     $after = $json->data->after; 
     // Loop though each post and output title 
     foreach ($json->data->children as $k => $v) { 
      $titles .= $v->data->title . "\n"; 
     } 
    } 
    // Increment page number 
    $page++; 
// Loop though whilst current page number is less than maximum pages 
} while ($page < $max_pages); 

// Save titles to text file 
file_put_contents(dirname(__FILE__) . '/' . $subreddit . '.txt', $titles); 
+0

Vielen Dank @Jamie, wenn Sie nur eine kurze Erklärung der Curl Bit bitte ich verstehe den Rest davon. –

+0

Vielen Dank. –

Verwandte Themen