什么是收集subreddit

时间:2016-07-05 10:00:37

标签: php python automation bots reddit

我希望收集subreddit上所有帖子的标题,我想知道最好的方法是什么?

我环顾四周,发现了一些关于Python和机器人的东西。我还简要介绍了API,并且不确定要去哪个方向。

由于我不想承诺找出通过它的90%的工作方式,我会问是否有人可以指出我正确的语言方向和附加功能,例如pip所需的任何软件蟒。

我自己的经验是在PHP等网络语言中,所以我最初想到的是一个网络应用程序可以解决这个问题,但我不确定这是不是最好的方式以及如何去做。

所以我的问题就是

  

收集标题(散装)的最佳方法是什么?   版(Subreddit)?

或者如果那太主观了

  

如何检索和存储subreddit的所有帖子?

最好需要:

  • 执行超过1页的(25)结果
  • 保存为.txt文件

提前致谢。

1 个答案:

答案 0 :(得分:2)

PHP; 25行:

$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);