Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. #!python3
  2. # bolero-etf-availability-scraper.py
  3.  
  4. import os
  5. from selenium import webdriver
  6. from time import sleep
  7. from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
  8.  
  9. firefox_exec = os.getenv('FIREFOX_EXEC', default='C:\\Users\\Kids\\AppData\\Local\\Mozilla Firefox\\firefox.exe')
  10. geckodriver_exec = os.getenv('GECKODRIVER_EXEC', default='C:\\Users\\Kids\\Downloads\\geckodriver.exe')
  11. driver = webdriver.Firefox(executable_path=geckodriver_exec,
  12. firefox_binary=FirefoxBinary(firefox_exec))
  13.  
  14. driver.get("https://platform.bolero.be")
  15. print("Please log in")
  16. input("Press any key to continue...")
  17.  
  18. driver.get("https://platform.bolero.be/#/search/etf/stocks")
  19. sleep(3)
  20. search_button = driver.find_element_by_class_name("Security-Type-button--results")
  21. assert search_button is not None
  22. search_button.click()
  23.  
  24. input("Press any key to start scraping these and the following asset listing pages...")
  25.  
  26. fail_string_priips = "Dit effect kan niet aangekocht worden, want er is geen essentiële-informatiedocument beschikbaar."
  27. fail_string_notyet = "Dit effect is nog niet aanwezig in ons waardenbestand."
  28.  
  29. try:
  30. page_nr = 1
  31. while True:
  32. sleep(4)
  33. buy_buttons = driver.find_elements_by_class_name("icon-traderapp-plus-minus--boxed")
  34.  
  35. for btn in buy_buttons:
  36. btn.click()
  37. sleep(3)
  38. warnings = driver.find_elements_by_css_selector(".warning__header,.order__form__alert__header")
  39. warnings_text = "".join(w.text for w in warnings)
  40. status = ""
  41. if fail_string_notyet in warnings_text:
  42. status = "notyet"
  43. elif fail_string_priips in warnings_text:
  44. status = "priips"
  45. else:
  46. status = "yes"
  47.  
  48. e_ticker = driver.find_element_by_css_selector("span[ta-show=\"summary.symbol\"]")
  49. assert e_ticker is not None
  50. ticker = e_ticker.text[1:-1]
  51. full_name = e_ticker.find_element_by_xpath("./..").text
  52.  
  53. isin = driver.find_element_by_class_name("hotspot--mini__isin").text[6:]
  54.  
  55. print(";".join((ticker, full_name, isin, status)))
  56. driver.back()
  57. sleep(2)
  58.  
  59. next_btn = driver.find_element_by_css_selector(".pagination__link>.icon-traderapp-arrow--right")
  60. next_btn.click()
  61.  
  62. page_nr += 1
  63. print(f"Page {page_nr}")
  64. except KeyboardInterrupt:
  65. # fail silently
  66. pass
  67.  
  68. driver.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement