Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/python3
- # Usage: ./TextPostScraper.py <subreddit>
- import praw, os, sys, datetime
- client_id = ""
- client_secret = ""
- username = ""
- password = ""
- subname = sys.argv[1]
- os.makedirs(subname, exist_ok=True)
- reddit = praw.Reddit(client_id=client_id, client_secret=client_secret, password=password, user_agent='Text Post Archiver', username=username)
- sub = reddit.subreddit(subname)
- posts = sub.submissions()
- postnumber = 0
- def getdate(submission):
- time = submission.created
- return datetime.datetime.fromtimestamp(time)
- postslist = open(subname+' Post Archive.html', "a")
- archive = """<html>
- <center><head>Posts from /r/"""+subname+"""</head></center>
- <body>"""
- postslist.write(archive)
- for submission in posts:
- try:
- savepost = open(os.path.join(subname, submission.id+'.html'), "a")
- savepost_comments = submission.comments.list()
- postnumber+=1
- print('Saving Post #'+str(postnumber)+': '+submission.title.replace("/","."))
- post = """<html>
- <head></head>
- <body> <p>"""+submission.title+"""</p> <p>"""+submission.selftext.replace("’","'").replace('”','"').replace("—","--").replace('“','"').replace("‘","'").replace("…","...").replace("–","-")+"""</p>"""
- savepost.write(post)
- for comment in savepost_comments:
- comment = """<p>"""+'['+str(comment.score)+' Points] '+str(comment.author)+': '+comment.body+"""</p>"""
- savepost.write(comment)
- finish = """ </body> </html>"""
- savepost.write(finish)
- savepost.close()
- cwd = os.getcwd()
- currentpost = """ """+str(submission.author)+' ['+str(submission.score)+' points] '+'['+str(submission.num_comments)+' comments] '+str(getdate(submission))+' '+"""<a href=\""""+cwd+'/'+subname+'/'+submission.id+'.html'+'">'+submission.title+'</a> <br>'""""""
- postslist.write(currentpost)
- except AttributeError:
- pass
- finished = """</body> </html>"""
- postslist.write(finished)
- postslist.close()
Advertisement
Add Comment
Please, Sign In to add comment