#python #selenium
Вопрос:
Ситуация
Я использую Selenium и Python для извлечения информации со страницы
Вот div, который я хочу извлечь из:
Я хочу извлечь «Registre-se» и текст «Вход».
Мой код
from selenium import webdriver
url = 'https://www.bet365.com/#/AVR/B146/R^1'
driver = webdriver.Chrome()
driver.get(url.format(q=''))
elements = driver.find_elements_by_class_name('hm-MainHeaderRHSLoggedOutNarrow_Join ')
for e in elements:
print(e.text)
elements = driver.find_elements_by_class_name('hm-MainHeaderRHSLoggedOutNarrow_Login ')
for e in elements:
print(e.text)
Проблема
Мой код не отправляет никаких выходных данных.
HTML
<div class="hm-MainHeaderRHSLoggedOutNarrow_Join ">Registre-se</div>
<div class="hm-MainHeaderRHSLoggedOutNarrow_Login " style="">Login</div>
Комментарии:
1. попробуйте
get_text()
метод на элементе2. @GhostOps не работает :/
3. попробуйте получить исходный код страницы и проверьте, отличается ли имя класса html-тега от ручной проверки веб-сайта
4. Имя класса «hm-MainHeaderRHSLoggedOutMed_Login» отображается только при проверке веб-сайта, но не в источнике страницы. Что он должен делать сейчас?
5. получите источник страницы элемента, измените имена классов и повторите попытку
Ответ №1:
Посмотрев этот HTML
<div class="hm-MainHeaderRHSLoggedOutNarrow_Join ">Registre-se</div>
<div class="hm-MainHeaderRHSLoggedOutNarrow_Login " style="">Login</div>
и ваш код, который мне кажется нормальным, за исключением той части, которую вы используете find_elements
для одного веб — элемента.
и, прочитав этот комментарий
Имя класса «hm-MainHeaderRHSLoggedOutMed_Login» отображается только при проверке веб-сайта, но не в источнике страницы. Что он должен делать сейчас?
Ясно, что элемент находится либо в iframe, либо в теневом корне.
Причина page_source
не ищет iframe.
Пожалуйста, проверьте, есть ли он в iframe, тогда вам придется сначала переключиться на iframe, а затем вы сможете использовать код, который у вас есть.
переключи его вот так :
driver.switch_to.frame(driver.find_element_by_xpath('xpath here'))