Advertisement
Guest User

Locus website scrape for PVOutput

a guest
Jun 7th, 2019
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.  
  26. username = 'email'
  27. password = 'password'
  28. PVOUTPUT_APIKEY = 'apikey'
  29. PVOUTPUT_SYSTEMID = 'system id number'
  30.  
  31. # setup a web scraping session
  32. browser = webdriver.Firefox(options=options)
  33. browser.implicitly_wait(15)
  34. browser.get('https://solarnoc.datareadings.com/legacy/login/')
  35.  
  36. # log into website
  37. browser.find_element_by_id("username").send_keys(username)
  38. browser.find_element_by_id("password").send_keys(password)
  39. browser.find_element_by_xpath('//*[@class="btn btn-primary"]').click()
  40.  
  41. # grab power and energy values
  42. power = browser.find_element_by_name("instantValue").text
  43. energy = browser.find_element_by_name("lifetimeValue").text
  44.  
  45. if power == 'Offline':
  46. power = '0'
  47.  
  48. power = power.replace(',', '')
  49. energy = energy.replace(',', '')
  50.  
  51. #Output values to a file
  52. f = open('spreadsheet.csv','a')
  53. print(time.strftime("%m/%d/%Y")+", "+time.strftime("%H:%M")+", "+power+", "+energy, file=f)
  54. f.close()
  55.  
  56. # Upload to pvoutput.org
  57. t_date = 'd={0}'.format(time.strftime('%Y%m%d'))
  58. t_time = 't={0}'.format(time.strftime('%H:%M'))
  59. t_energy = 'v1={0}'.format(1000*float(energy))
  60. t_power = 'v2={0}'.format(1000*float(power))
  61. cmd = ['/usr/bin/curl',
  62. '-d', t_date,
  63. '-d', t_time,
  64. '-d', t_energy,
  65. '-d', t_power,
  66. '-d', 'c1=1',
  67. '-H', 'X-Pvoutput-Apikey: ' + PVOUTPUT_APIKEY,
  68. '-H', 'X-Pvoutput-SystemId: ' + PVOUTPUT_SYSTEMID,
  69. 'http://pvoutput.org/service/r2/addstatus.jsp']
  70. # print(cmd)
  71. ret = subprocess.call (cmd)
  72. # print(ret)
  73.  
  74. browser.quit()
  75. display.stop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement