![]() |
VOOZH | about |
In this article, we are going to see how to scrape Reddit using Python, here we will be using python's PRAW (Python Reddit API Wrapper) module to scrape the data. Praw is an acronym Python Reddit API wrapper, it allows Reddit API through Python scripts.
To install PRAW, run the following commands on the command prompt:
pip install praw
Step 1: To extract data from Reddit, we need to create a Reddit app. You can create a new Reddit app(https://www.reddit.com/prefs/apps).
Step 2: Click on "are you a developer? create an app...".
Step 3: A form like this will show up on your screen. Enter the name and description of your choice. In the redirect uri box, enter http://localhost:8080
Step 4: After entering the details, click on "create app".
The Reddit app has been created. Now, we can use python and praw to scrape data from Reddit. Note down the client_id, secret, and user_agent values. These values will be used to connect to Reddit using python.
In order to connect to Reddit, we need to create a praw instance. There are 2 types of praw instances:
Now that we have created an instance, we can use Reddit's API to extract data. In this tutorial, we will be only using the read-only instance.
There are different ways of extracting data from a subreddit. The posts in a subreddit are sorted as hot, new, top, controversial, etc. You can use any sorting method of your choice.
Let's extract some information from the redditdev subreddit.
Output:
Now let's extract 5 hot posts from the Python subreddit:
Output:
We will now save the top posts of the python subreddit in a pandas data frame:
Output:
Output:
To extract data from Reddit posts, we need the URL of the post. Once we have the URL, we need to create a submission object.
We will extract the best comments from the post we have selected. We will need the MoreComments object from the praw module. To extract the comments, we will use a for-loop on the submission object. All the comments will be added to the post_comments list. We will also add an if-statement in the for-loop to check whether any comment has the object type of more comments. If it does, it means that our post has more comments available. So we will add these comments to our list as well. Finally, we will convert the list into a pandas data frame.