Как правильно дать условие о том что «осадков» нету?
Почитать учебник, понять про области видимости переменных и объявить переменную output в том же блоке, где она используется.
Во втором случае там нет двух вложенных span, и до строчки output = [e.strip() for e in first if not e.name and e.strip()] дело не доходит.