Guest User

Locus website scrape

a guest
Jun 7th, 2019
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. from __future__ import print_function
  2. import time
  3. import sys
  4. import subprocess
  5. from pyvirtualdisplay import Display
  6. from selenium import webdriver
  7. from selenium.webdriver.common.keys import Keys
  8. from selenium.webdriver.firefox.options import Options
  9. from selenium.webdriver.common.by import By
  10. from selenium.webdriver.support.ui import WebDriverWait
  11. from selenium.webdriver.support import expected_conditions as EC
  12.  
  13. # Requires xvfb, Firefox, geckodriver, PyVirtualDisplay, and Selenium.
  14. # apt install xvfb
  15. # apt install firefox
  16. # pip install pyvirtualdisplay
  17. # pip install selenium
  18. # https://github.com/mozilla/geckodriver/releases
  19.  
  20. display = Display(visible=0, size=(800, 600))
  21. display.start()
  22.  
  23. options = Options()
  24. options.headless = True
  25. driver = webdriver.Firefox(options=options)
  26.  
  27. username = 'email'
  28. password = 'password'
  29. PVOUTPUT_APIKEY = 'apikey'
  30. PVOUTPUT_SYSTEMID = 'system id number'
  31.  
  32. # setup a web scraping session
  33. browser = webdriver.Firefox()
  34. browser.implicitly_wait(15)
  35. browser.get('https://solarnoc.datareadings.com/legacy/login/')
  36.  
  37. # log into website
  38. browser.find_element_by_id("username").send_keys(username)
  39. browser.find_element_by_id("password").send_keys(password)
  40. browser.find_element_by_xpath('//*[@class="btn btn-primary"]').click()
  41.  
  42. # grab power and energy values
  43. power = browser.find_element_by_name("instantValue").text
  44. energy = browser.find_element_by_name("lifetimeValue").text
  45.  
  46. if power == 'Offline':
  47. power = '0'
  48.  
  49. power = power.replace(',', '')
  50. energy = energy.replace(',', '')
  51.  
  52. #Output values to a file
  53. f = open('spreadsheet.csv','a')
  54. print(time.strftime("%m/%d/%Y")+", "+time.strftime("%H:%M")+", "+power+", "+energy, file=f)
  55. f.close()
  56.  
  57. # Upload to pvoutput.org
  58. t_date = 'd={0}'.format(time.strftime('%Y%m%d'))
  59. t_time = 't={0}'.format(time.strftime('%H:%M'))
  60. t_energy = 'v1={0}'.format(1000*float(energy))
  61. t_power = 'v2={0}'.format(1000*float(power))
  62. cmd = ['/usr/bin/curl',
  63. '-d', t_date,
  64. '-d', t_time,
  65. '-d', t_energy,
  66. '-d', t_power,
  67. '-d', 'c1=1',
  68. '-H', 'X-Pvoutput-Apikey: ' + PVOUTPUT_APIKEY,
  69. '-H', 'X-Pvoutput-SystemId: ' + PVOUTPUT_SYSTEMID,
  70. 'http://pvoutput.org/service/r2/addstatus.jsp']
  71. # print(cmd)
  72. ret = subprocess.call (cmd)
  73. # print(ret)
  74.  
  75. browser.quit()
  76. display.stop()
Advertisement
Add Comment
Please, Sign In to add comment