/html/body[@id='gsr']/div[@id='main']...
- что вы там курите?
Для погоды есть специальная библиотека -
pyowm
Если хочется парсить google, то разделите код на функции. Сделайте отдельную функцию для парсинга, и из неё возвращаете данные. Проще отладить функцию, чем весь код проекта.
Вот пример(не утверждаю что правильно, но работает):
def getWeather(city_):
response = requests.get(f'https://www.google.com/search?q=Погода {city_}',headers=headers)
soup = BeautifulSoup(response.text,"html.parser")
city = soup.select_one('#wob_loc').text.split(',')[0] # город
current_temp = soup.select_one('#wob_tm').text # температурв
cloudiness = soup.select_one('#wob_dc').text #"облачность"
chanceOfPrecipitation = soup.select_one('#wob_pp').text # вероятность осадков
humidity = soup.select_one('#wob_hm').text # влажность
wind = soup.select_one('#wob_ws').text # ветер
weather = { 'city':city,
'current_temp':current_temp,
'cloudiness':cloudiness,
'chanceOfPrecipitation':chanceOfPrecipitation,
'humidity':humidity,
'wind':wind
}
return weather
Далее вызов функции:
weather = getWeather('киев')
print(f'''
Город: {weather['city']}
Температура: {weather['current_temp']}
Облачность: {weather['cloudiness']}
Вероятность осадков: {weather['chanceOfPrecipitation']}
Влажность: {weather['humidity']}
Ветер: {weather['wind']}
''')
Вывод в консоль:
Город: Київ
Температура: 12
Облачность: Мінлива хмарність
Вероятность осадков: 0%
Влажность: 39%
Ветер: 24 км/год
PS: В коде нет никаких проверок!