Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Центр помощи
  • » При парсинге сайта погоды получаю совсем не те данные, которые отображаются браузере [RSS Feed]

#1 Апрель 23, 2023 01:23:57

vladimir_vl_vlad
Зарегистрирован: 2021-07-16
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

При парсинге сайта погоды получаю совсем не те данные, которые отображаются браузере

Скажем, в браузере: время 7:57 температура +5° ветер 7 м/с влажность 28%
При парсинге получаю: время 0:57 температура +11° ветер 0 м/с влажность 45%

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

В чем причина, поясните плз.
Мой код:

 url = 'https://www.meteoservice.ru/weather/now/vladivostok'
response = requests.get(url)
html_dock = BeautifulSoup(response.text, features='html.parser')
list_of_values = html_dock.find_all('div', {'class': 'small-12 medium-6 large-5 columns current-weather'})
date_time = list_of_values[0].find_all('span', {'class': 'point-time'})[0]
temperature = list_of_values[0].find_all('span', {'class': 'value'})[0]
wind = list_of_values[0].find_all('span', {'class': 'value'})[2]
air_humidity = list_of_values[0].find_all('div', {'class': 'h5 margin-bottom-0'})[1]
precipitation = list_of_values[0].find_all('div', {'class': 'small-12 columns text-center padding-top-2'})[0]
print(date_time.text, temperature.text, wind.text, air_humidity.text, precipitation.text)

Офлайн

#2 Апрель 23, 2023 04:43:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9851
Репутация: +  853  -
Профиль   Отправить e-mail  

При парсинге сайта погоды получаю совсем не те данные, которые отображаются браузере

Всё работает нормально.

vladimir_vl_vlad
В чем причина, поясните плз.
Запускаешь не этот код.

Запусти в консоли, а не в IDE.



Отредактировано py.user.next (Апрель 23, 2023 04:44:19)

Офлайн

#3 Апрель 23, 2023 12:09:15

vladimir_vl_vlad
Зарегистрирован: 2021-07-16
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

При парсинге сайта погоды получаю совсем не те данные, которые отображаются браузере

py.user.next
Всё работает нормально.
Если через консоль - тоже самое: иногда правильно, иногда вообще непонятно откуда цифры берутся.

Офлайн

#4 Апрель 23, 2023 13:52:18

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9851
Репутация: +  853  -
Профиль   Отправить e-mail  

При парсинге сайта погоды получаю совсем не те данные, которые отображаются браузере

vladimir_vl_vlad
Если через консоль - тоже самое
Сделай скриншот консоли, в которой запускаешь, и выложи сюда.

Вот я делаю, он только показывает время последних измерений (часы и минуты не совпадают)
  
>>> import requests
>>> from bs4 import BeautifulSoup
>>> 
>>> def f():
...     url = 'https://www.meteoservice.ru/weather/now/vladivostok'
...     response = requests.get(url)
...     html_dock = BeautifulSoup(response.text, features='html.parser')
...     list_of_values = html_dock.find_all('div', {'class': 'small-12 medium-6 large-5 columns current-weather'})
...     date_time = list_of_values[0].find_all('span', {'class': 'point-time'})[0]
...     temperature = list_of_values[0].find_all('span', {'class': 'value'})[0]
...     wind = list_of_values[0].find_all('span', {'class': 'value'})[2]
...     air_humidity = list_of_values[0].find_all('div', {'class': 'h5 margin-bottom-0'})[1]
...     precipitation = list_of_values[0].find_all('div', {'class': 'small-12 columns text-center padding-top-2'})[0]
...     print(date_time.text, temperature.text, wind.text, air_humidity.text, precipitation.text)
... 
>>> for i in range(5):
...     f()
... 
23 апреля, 13:47 +17° 1 м/с 28% 
Малооблачно
 
23 апреля, 13:47 +17° 1 м/с 28% 
Малооблачно
 
23 апреля, 13:47 +17° 1 м/с 28% 
Малооблачно
 
23 апреля, 13:47 +17° 1 м/с 28% 
Малооблачно
 
23 апреля, 13:47 +17° 1 м/с 28% 
Малооблачно
 
>>>

vladimir_vl_vlad
Скажем, в браузере: время 7:57 температура +5° ветер 7 м/с влажность 28%
При парсинге получаю: время 0:57 температура +11° ветер 0 м/с влажность 45%
Почисти кэш браузера ещё.



Отредактировано py.user.next (Апрель 23, 2023 13:53:37)

Офлайн

#5 Апрель 24, 2023 05:56:24

vladimir_vl_vlad
Зарегистрирован: 2021-07-16
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

При парсинге сайта погоды получаю совсем не те данные, которые отображаются браузере

Вот скриншот: видно, что, начиная с 8-го вызова функции, данные изменяются и начинают совпадать с теми, что отображаются в браузере
Ссылка на скриншот

Офлайн

#6 Апрель 24, 2023 09:00:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9851
Репутация: +  853  -
Профиль   Отправить e-mail  

При парсинге сайта погоды получаю совсем не те данные, которые отображаются браузере

У меня вот оно показывает время неправильно (часы неправильные, а потом и минуты неправильными становятся)

  
>>> import requests
>>> from bs4 import BeautifulSoup
>>> import time
>>> 
>>> def f():
...     url = 'https://www.meteoservice.ru/weather/now/vladivostok'
...     response = requests.get(url)
...     html_dock = BeautifulSoup(response.text, features='html.parser')
...     list_of_values = html_dock.find_all('div', {'class': 'small-12 medium-6 large-5 columns current-weather'})
...     date_time = list_of_values[0].find_all('span', {'class': 'point-time'})[0]
...     temperature = list_of_values[0].find_all('span', {'class': 'value'})[0]
...     wind = list_of_values[0].find_all('span', {'class': 'value'})[2]
...     air_humidity = list_of_values[0].find_all('div', {'class': 'h5 margin-bottom-0'})[1]
...     precipitation = list_of_values[0].find_all('div', {'class': 'small-12 columns text-center padding-top-2'})[0]
...     print(date_time.text, temperature.text, wind.text, air_humidity.text, precipitation.text)
... 
>>> for i in range(20):
...     f()
...     time.sleep(10)
... 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:48 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:53 +11° 1 м/с 51% 
Ясно
 
24 апреля, 8:53 +11° 1 м/с 51% 
Ясно
 
>>>

Так что забей на этот сайт. Там какая-то муть просто отображается. Найди другой сайт.

Я думал, у тебя просто там что-то с Интернетом, бывает такое, что “умные” провайдеры начинают кешировать страницы для экономии чего-то и в итоге чушь всякая показывается устаревшая, хотя ты запрашивал всё правильно. Но это не тот случай, тут сам сайт гонит.



Отредактировано py.user.next (Апрель 24, 2023 09:02:28)

Офлайн

  • Начало
  • » Центр помощи
  • » При парсинге сайта погоды получаю совсем не те данные, которые отображаются браузере[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version