парсинг данных с windguru
Доброго времени суток, коллеги, Пытаюсь с популярного сайта "вытянуть" скорость ветра через хтмл парсер. По факту, используя код ниже, получают ответ, в котором отсутствует элемент внутри тега span. Другими словами: нечего спарсить. Не могу понять в чём проблема. Прошу помощи. Заранее благодарю.
"span class="wgs_wind_avg_value"></span"
import requests # Модуль для обработки URL
from bs4 import BeautifulSoup # Модуль для работы с HTML
try:
WIND = 'https://www.windguru.cz/station/3303'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'}
full_page = requests.get(WIND, headers=headers)
soup_eur = BeautifulSoup(full_page.content, 'html.parser')
wind_speed = soup_eur.findAll("span", {"class": "wgs_wind_avg_value"})
print(wind_speed)
except:
print("ошибка")
Ответы (1 шт):
Если вы проинспектируете контент, который загружается при открытии страницы этого сайта, то сможете найти там нужные данные: https://gyazo.com/8af3a00a7ffc4e7cf2cfda393d6d1af5 https://gyazo.com/7b8c3454e4d3f94c523bfbe740b70616
Я взял первый попавшийся запрос, скопировал cURL и переписал в request:
import requests
headers = {
'authority': 'www.windguru.net',
'accept': '*/*',
'accept-language': 'en-US,en;q=0.9,ru-RU;q=0.8,ru;q=0.7',
'cache-control': 'no-cache',
'origin': 'https://www.windguru.cz',
'pragma': 'no-cache',
'referer': 'https://www.windguru.cz/',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="101", "Google Chrome";v="101"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'cross-site',
}
params = {
'q': 'station',
'id_station': '3303',
'weather': 'false',
}
response = requests.get('https://www.windguru.net/int/iapi.php', params=params, headers=headers)
print(response.json())
{'id_station': 3303,
'id_type': 17,
'wg': False,
'id_spot': 1103023,
'spotname': 'Duny, St.Petersburg',
'name': 'TakeOff (NEW)',
'lat': 60.130498,
'lon': 29.938017,
'alt': 10,
'install_height': 10,
'timezone': 'Europe/Moscow',
'tzoffset': 10800,
'owner': '',
'url': '',
'description': '',
'logo': 'img1_6258_1_1652212403.jpg',
'weather': {'wind_avg': 14.36,
'wind_max': 15.91,
'wind_min': 12.81,
'wind_direction': 261.5625,
'temperature': 14.5,
'mslp': 767.812,
'rh': None,
'datetime': '2022-06-03 12:05:30 MSK',
'unixtime': 1654247130},
'favourite': False}
А распарсить такой JSON намного легче, чем HTML.