Задать вопрос
@rink0

Через сайт вижу содержание тега, парсер не видит, в чём проблема?

Сначала объясню мне нужно спарсить погоду на сегодня и на следующий день, на сегодня я сделал, а вот на следующий день нет.
id="bd2c" это вкладка с информацией о погоде на 6 число, то что мне нужно.(сегодня 5)
Но вот в чём трабл я её могу прочитать с компа только если либо перейду на вкладку с погодой на это число(6 число) либо открою ссылку которая открывает вкладку с погодой на 6 число на данный момент это вот эта
https://sinoptik.com.ru/погода-синельниково-303024...
Казалось бы всё можно для requests поставить этот url и парсить, но нет парсер видет это так
5a9d9bb79c2d7599501376.png
Повторюсь мне нужно увидеть
<div class="Tab" id="bd2c">что здесь находится</div>

И покажу как видит это компьютер
5a9d9b553660e148922483.png
Помогите пожалуйста
  • Вопрос задан
  • 659 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
demon416nds
@demon416nds
Разработчик на чем попало
отследите лучше откуда js данные качает
и качайте напрямую (не забыв замаскироваться под браузер естественно)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@asd111
Погоду не нужно парсить для этого есть API https://openweathermap.org/api. Ещё для python есть готовая библиотека https://github.com/csparpa/pyowm

На requests можно сделать так, только надо зарегистрироваться чтобы получить APIKEY.
Поиск города:

import requests
s_city = "Petersburg,RU"
city_id = 0
appid = "APIKEY полученный после регистрации по ссылке https://home.openweathermap.org/users/sign_up"
try:
    res = requests.get("http://api.openweathermap.org/data/2.5/find",
                 params={'q': s_city, 'type': 'like', 'units': 'metric', 'APPID': appid})
    data = res.json()
    cities = ["{} ({})".format(d['name'], d['sys']['country'])
              for d in data['list']]
    print("city:", cities)
    city_id = data['list'][0]['id']
    print('city_id=', city_id)
except Exception as e:
    print("Exception (find):", e)
    pass


Текущая погода :
try:
    res = requests.get("http://api.openweathermap.org/data/2.5/weather",
                 params={'id': city_id, 'units': 'metric', 'lang': 'ru', 'APPID': appid})
    data = res.json()
    print("conditions:", data['weather'][0]['description'])
    print("temp:", data['main']['temp'])
    print("temp_min:", data['main']['temp_min'])
    print("temp_max:", data['main']['temp_max'])
except Exception as e:
    print("Exception (weather):", e)
    pass


Прогноз на 5 дней:
try:
    res = requests.get("http://api.openweathermap.org/data/2.5/forecast",
                           params={'id': city_id, 'units': 'metric', 'lang': 'ru', 'APPID': appid})
    data = res.json()
    for i in data['list']:
    print( i['dt_txt'], '{0:+3.0f}'.format(i['main']['temp']), i['weather'][0]['description'] )
except Exception as e:
    print("Exception (forecast):", e)
    pass
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы