Телеграмм бот который присылает погоду
Решил сделать тг бота, который будет брать погоду с сайта и присылать в группу. Написал, но получаю ошибку. Подскажите, пожалуйста, в какую сторону мне копать?
Вот собственно сам код.
import requests
from bs4 import BeautifulSoup
pog = 'https://world-weather.ru/pogoda/russia/moscow/'
r = requests.get(pog)
soup = BeautifulSoup(r.text, 'html.parser')
for temp in soup.find_all('div', id = 'weather-now-number'):
temp = temp.text
for obl in soup.find_all('span', id = 'weather-now-icon'):
obl = obl.get('title')
for timew in soup.find_all('div', class_ = 'weather-now-info'):
timew = timew.text[6:-3]
for dr in soup.find_all('div', id = 'weather-now-descriprion'):
line = dr.text
last_index = 0
itog = []
for i, char in enumerate(line[1:-9]):
if char.istitle() or i == len(line[1:-10]):
itog.append(line[last_index:i + 1])
last_index = i + 1
itog.append(line[-10:-4])
itog.append(line[-4:])
dr = ' '.join(itog[:-5])
send_tg = 'Погода в Москве: ' + '\n' + temp + ' ' + obl + '\n' + dr + '\n' + 'Данные на: ' + timew
print(send_tg)
Выдаёт следующую ошибку.
send_tg = 'Погода в Москве: ' + '\n' + temp + ' ' + obl + '\n' + dr + '\n' + 'Данные на: ' + timew
NameError: name 'temp' is not defined
Ответы (1 шт):
Автор решения: Аске
→ Ссылка
Если вы начинающий, по пробуйте взаимодействовать с другим сайтом подобного характера. Данный сайт изначально на 8ой строке блокирует доступ, по этому у вас ничего получается. Рекомендую найти другой сайт, либо обходить защиты сайтов, применять user-agent запросы и.д.
Решение данной проблемы
import requests
from bs4 import BeautifulSoup
pog = 'https://world-weather.ru/pogoda/russia/moscow/'
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
r = requests.get(pog, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
temp = soup.find('div', id='weather-now-number')
print(temp)
for obl in soup.find_all('span', id = 'weather-now-icon'):
obl = obl.get('title')
for timew in soup.find_all('div', class_ = 'weather-now-info'):
timew = timew.text[6:-3]
for dr in soup.find_all('div', id = 'weather-now-descriprion'):
line = dr.text
last_index = 0
itog = []
for i, char in enumerate(line[1:-9]):
if char.istitle() or i == len(line[1:-10]):
itog.append(line[last_index:i + 1])
last_index = i + 1
itog.append(line[-10:-4])
itog.append(line[-4:])
dr = ' '.join(itog[:-5])
send_tg = 'Погода в Москве: ' + '\n' + str(temp) + ' ' + str(obl) + '\n' + str(dr) + '\n' + 'Данные на: ' + str(timew)
print(send_tg)
Был добавлен user-agent. В коде много ошибок, например id weather-now-descriprion я не нашел на сайте
