python - Use Selenium to click a 'Load More' button until it doesn't exist (Youtube) -
i trying write python script goes youtube channel. clicks on video tab. scrapes webpage content. fine scraping content, until... load more button. python script have manages click load more button once never presses again :'( how can modify code have make click again , again until doesn't exist. way, can open user's complete channel , information every video have. thankyou.
from selenium import webdriver selenium.common.exceptions import nosuchelementexception selenium.webdriver.common.by import selenium.webdriver.support.ui import webdriverwait selenium.webdriver.support import expected_conditions ec
^^ modules have imported. don't know how add in nosuchelementexception code either. here code:
chrome_path = r"/users/jack/desktop/other/downloads/software_and_programs/chromedriver" browser = webdriver.chrome(chrome_path) youtuber_home_page_url = "https://www.youtube.com/user/google/videos" patience_time = 60 load_more_button_xpath = '//*[@id="browse-itemsprimary"]/li[2]/button/span/span[2]' def waitforload(inputxpath): wait = webdriverwait(browser, patience_time) wait.until(ec.presence_of_element_located((by.xpath, inputxpath))) loadmorebuttonexists = true while loadmorebuttonexists: try: waitforload(load_more_button_xpath) webdriverwait(browser, patience_time) loadmorebutton = browser.find_element_by_partial_link_text('load more') #loadmorebutton = browser.find_element_by_xpath(load_more_button_xpath) loadmorebutton.click() except: print 'we have loaded every video youtuber. scrape video content\n' loadmorebuttonexists = false
i have used xpath way , still seems not work. have commented out in code above. awesome if on this. haven't been able find answers. believe can done selenium, if not should use?
you can use following code scrolling
from selenium import webdriver selenium.common.exceptions import nosuchelementexception selenium.webdriver.common.by import selenium.webdriver.support.ui import webdriverwait selenium.webdriver.support import expected_conditions ec import time #browser = webdriver.firefox()#chrome('./chromedriver.exe') youtuber_home_page_url = "https://www.youtube.com/user/google/videos" patience_time = 60 load_more_button_xpath = '//*[@id="browse-itemsprimary"]/li[2]/button/span/span[2]' driver = webdriver.chrome('./chromedriver.exe') driver.get(youtuber_home_page_url) while true: try: loadmorebutton = driver.find_element_by_xpath("//button[contains(@aria-label,'load more')]") time.sleep(2) loadmorebutton.click() time.sleep(5) except exception e: print e break print "complete" time.sleep(10) driver.quit()
Comments
Post a Comment