Привет, есть сайт
https://weather.rambler.ru/v-nur-sultane/3-days/ , нужно парсить
Вот мой элемент кода который парсит это самое место:
for first in precipitation.select('span'):
for second in first.select('span'):
output = [e.strip() for e in first if not e.name and e.strip()]
print(output[0] + "%")
Если в span присутствует "Вероятность осадков 70%", то он успешно парсится, а если просто слова "Без осадков" то выдает ошибку:
Traceback (most recent call last):
File "/home/dizinnes/PycharmProjects/weatherbot/test.py", line 38, in <module>
nursultan_tomorrow_parser()
File "/home/dizinnes/PycharmProjects/weatherbot/test.py", line 33, in nursultan_tomorrow_parser
Осадки: {output[0]}%
UnboundLocalError: local variable 'output' referenced before assignment
Весь код самого парсера:
spoilerimport requests
from bs4 import BeautifulSoup
def nursultan_tomorrow_parser():
r = requests.get('https://weather.rambler.ru/v-nur-sultane/3-days/')
html = BeautifulSoup(r.content, 'html.parser')
for tomorrow in html.select('div._18iJ:nth-child(3)'):
night_temperature = tomorrow.select_one('span._3k_D:nth-child(2)').text
for determine_temperature in tomorrow.select('div._3wdR:nth-child(2)'):
day_temperature = determine_temperature.select_one('span._3k_D').text
for wind in tomorrow.select('div._1Y0B.wind'):
wind_result = wind.select_one('span._1DZh').text.lower()
for precipitation in tomorrow.select('div._1Y0B.precipitationProbability'):
# preciptation_result = precipitation.select_one('span._1DZh').content
for first in precipitation.select('span'):
for second in first.select('span'):
output = [e.strip() for e in first if not e.name and e.strip()]
# e = []
# for e in test2:
# if not e.name and e.strip:
# pass
# else:
# e = ['без осадков']
result = f'''\
Прогноз погоды на завтра:
Температура ночью: {night_temperature}
Температура днём: {day_temperature}
Скорость ветра: {wind_result}
Осадки: {output[0]}%
'''
print(result)
nursultan_tomorrow_parser()
Как мне исправить ошибку ?