Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- page = requests.get(url)
- soup = bs(page.content, 'html.parser')
- # Get data from header
- forecast_table = soup.find('table', attrs={'class': 'forecast__table forecast__table--js'})
- days = forecast_table.find('tr', attrs={'data-row': 'days'}).find_all('td')
- # Get rows from body
- times = forecast_table.find('tr', attrs={'data-row': 'time'}).find_all('td')
- winds = forecast_table.find('tr', attrs={'data-row': 'wind'}).find_all('img') # Use "img" instead of "td" to get direction of wind
- summaries = forecast_table.find('tr', attrs={'data-row': 'summary'}).find_all('td')
- rains = forecast_table.find('tr', attrs={'data-row': 'rain'}).find_all('td')
- snows = forecast_table.find('tr', attrs={'data-row': 'snow'}).find_all('td')
- max_temps = forecast_table.find('tr', attrs={'data-row': 'max-temperature'}).find_all('td')
- min_temps = forecast_table.find('tr', attrs={'data-row': 'min-temperature'}).find_all('td')
- chills = forecast_table.find('tr', attrs={'data-row': 'chill'}).find_all('td')
- freezings = forecast_table.find('tr', attrs={'data-row': 'freezing-level'}).find_all('td')
- sunrises = forecast_table.find('tr', attrs={'data-row': 'sunrise'}).find_all('td')
- sunsets = forecast_table.find('tr', attrs={'data-row': 'sunset'}).find_all('td')
- # Iterate over days
- for i, day in enumerate(days):
- current_day = clean(day.get_text())
- elevation = url.rsplit('/', 1)[-1]
- num_cols = int(day['data-columns'])
- if current_day != '':
- date = str(datetime.date(datetime.date.today().year, datetime.date.today().month, int(current_day.split(' ')[1]))) # Avoid using date format. Pandas adds 00:00:00 for some reason. Figure out better way to format
- # Iterate over forecast
- for j in range(i, i + num_cols):
- time_cell = clean(times[j].get_text())
- wind = clean(winds[j]['alt'])
- summary = clean(summaries[j].get_text())
- rain = clean(rains[j].get_text())
- snow = clean(snows[j].get_text())
- max_temp = clean(max_temps[j].get_text())
- min_temp = clean(min_temps[j].get_text())
- chill = clean(chills[j].get_text())
- freezing = clean(freezings[j].get_text())
- sunrise = clean(sunrises[j].get_text())
- sunset = clean(sunsets[j].get_text())
- rows.append(np.array([mountain_name, date, elevation, time_cell, wind, summary, rain, snow, max_temp, min_temp, chill, freezing, sunrise, sunset]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement