@rink0

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

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

И покажу как видит это компьютер
5a9d9b553660e148922483.png
Помогите пожалуйста
  • Вопрос задан
  • 162 просмотра
Решения вопроса 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
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
от 70 000 до 120 000 руб.
Popmechanic Москва
от 100 000 до 150 000 руб.
Panda Media Нижний Новгород
от 70 000 руб.