Попробуйте использовать xpath для извлечения этих данных:
humidity = driver.find_elements_by_xpath('//tr[@class="detailed-view step-humidity"]//span[@class="humidity"][@data-type="percentage"]')
temperature = driver.find_elements_by_xpath('//tr[@class="step-temp"][@data-type="temp"]//td[@data-temp]/div')
precipitation = driver.find_elements_by_xpath('//tr[@class="step-pop"]//td[@class]')
wind_gust = driver.find_elements_by_xpath('//tr[@class="detailed-view step-wind-gust"]//td/span[@class="gust"]')
for h in humidity:
print(h.get_attribute('data-value'))
for t in temperature:
print(t.text)
for p in precipitation:
print(p.text)
for w in wind_gust:
print(w.text)
Поскольку в подобных случаях xpath является лучшим подходом к таргетингу, и, с другой стороны, поддержка xpath селена довольно ограничена, я обычно просто передаю через page_source
в библиотеку, такую как l xml, и проанализируйте ее там.
Я бы также просто загрузил все в pandas фрейм данных после того, как все это будет сделано.
Изменить:
Чтобы получить только первый элемент каждой функции погоды, используйте:
print(humidity[0].get_attribute('data-value'),temperature[0].text,precipitation[0].text)