pullTrafficInfo script created
This commit is contained in:
57
slack-bot/pullTrafficInfo.py
Normal file
57
slack-bot/pullTrafficInfo.py
Normal file
@@ -0,0 +1,57 @@
|
||||
from selenium import webdriver
|
||||
from selenium.common.exceptions import NoSuchElementException
|
||||
from datetime import datetime
|
||||
import re
|
||||
|
||||
|
||||
class getTrafficInfo(object):
|
||||
"""docstring for getTrafficInfo"""
|
||||
def __init__(self, browser):
|
||||
super(getTrafficInfo, self).__init__()
|
||||
self.browser = browser
|
||||
self.incidentTypes = ['congestion', 'accident']
|
||||
|
||||
@classmethod
|
||||
def getTrafficURL(cls, motorway, driver='chrome'):
|
||||
url = ('https://www.trafficdelays.co.uk/' + motorway.lower()
|
||||
+ '-traffic-delays')
|
||||
browser = getTrafficInfo.getWebDriver(driver, url)
|
||||
getTrafficInfo.verfiyMotorway(browser, motorway)
|
||||
return cls(browser)
|
||||
|
||||
@staticmethod
|
||||
def getWebDriver(driver, url):
|
||||
driver = driver.lower()
|
||||
if driver == 'chrome':
|
||||
# Prepare the option for the Chromedriver
|
||||
options = webdriver.ChromeOptions()
|
||||
options.add_argument('headless')
|
||||
# Start the Chromedriver
|
||||
browser = webdriver.Chrome(options=options)
|
||||
browser.get(url)
|
||||
return browser
|
||||
else:
|
||||
raise Exception(f'Driver {driver} not supported')
|
||||
|
||||
@staticmethod
|
||||
def verfiyMotorway(browser, motorway):
|
||||
try:
|
||||
verify = browser.find_element_by_xpath('/html/body/div[1]/div/div/'
|
||||
'div/section/div/div/'
|
||||
'div[1]')
|
||||
if verify.text in ('It looks like the link pointing here '
|
||||
'was faulty. Maybe try searching?'):
|
||||
raise Exception(f'No traffic information available for'
|
||||
f' {motorway}')
|
||||
except NoSuchElementException:
|
||||
pass
|
||||
|
||||
def findIncidents(self):
|
||||
for item in self.incidentTypes:
|
||||
xpath = f'//*[@id="{item}"]'
|
||||
setattr(self, f'item', self.browser.find_element_by_xpath(xpath))
|
||||
print(self.item.text)
|
||||
return self
|
||||
|
||||
|
||||
inst = getTrafficInfo.getTrafficURL('M62').findIncidents()
|
||||
Reference in New Issue
Block a user