from selenium.common import exceptions from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium import webdriver import time theuser = "USERNAME" thepass = "PASSWORD" targets = ["journal1","journal2","journal3","et cetera"] # just the username, no .dreamwidth.org, hyphens not underscores startyear = 2022 # year the first comments were left browser = webdriver.Firefox() browser.get("https://www.dreamwidth.org/login") username = browser.find_element(By.ID,"user") username.send_keys(theuser) password = browser.find_element(By.ID,"lj_loginwidget_password") password.send_keys(thepass) password.send_keys(Keys.RETURN) time.sleep(5) for target in targets: browser.get("https://" + target + ".dreamwidth.org") time.sleep(3) firstentry = browser.find_element(By.XPATH,"//h3[contains(@class,'entry-title') and not(contains(@class, 'sticky-entry-title'))]") firstentry.click() time.sleep(3) date = browser.find_element(By.CLASS_NAME,"datetime") try: while (int(date.text[0:4])) >= startyear: try: expand = browser.find_element(By.CLASS_NAME,"expand_all") expand.click() time.sleep(5) except: pass try: deletes = browser.find_elements(By.CLASS_NAME,"delete_comment") except: deletes = [] if len(deletes) > 1: goback = False else: goback = True while len(deletes) > 0: try: deletes[0].click() confirm = browser.find_element(By.CLASS_NAME,"ui-button") confirm.click() except: deletes = [] time.sleep(2) if goback: try: thenext = browser.find_element(By.XPATH,"//li[contains(@class,'page-next') and not(contains(@class, 'disabled'))]") thenext.click() except: backbutton = browser.find_element(By.CLASS_NAME,"link_prev") backbutton.click() else: browser.refresh() try: date = browser.find_element(By.CLASS_NAME,"datetime") except: date = 0 break time.sleep(2) except exceptions.StaleElementReferenceException: time.sleep(10) browser.quit()