Я пытаюсь очистить данные с этой страницы: https://www.oddsportal.com/soccer/chile/primera-division/curico-unido-o-higgins-CtsLggl6/#over-under;2

Здесь я пытаюсь расширить все поля «сравнить шансы», которые содержатся в этом HTML:

<div class="table-container">
            <div class="table-header-light even"><strong><a href="" onclick="page.togleTableContent('P-1.00-0-0',this);return false;">Over/Under +1 </a></strong><span class="avg chunk-odd-payout">93.4%</span><span class="avg chunk-odd nowrp"><a href="#" onclick="page.getActiveTableSet().togleMatch(this,'4j5hgx1tl1gx34x0',2);return false;" xparam="odds_text">5.63</a></span>
                <span
                    class="avg chunk-odd nowrp"><a href="#" onclick="page.getActiveTableSet().togleMatch(this,'4j5hgx1tkucx34x0',2);return false;" xparam="odds_text">1.12</a></span><span class="odds-cnt">(3)</span><span class="odds-co"><a class="more" href="" onclick="page.togleTableContent('P-1.00-0-0',this);return false;">Compare odds</a></span></div>
        </div>
        <div class="table-container" style="display: none;">
            <div class="table-header-light"><strong><a href="" onclick="page.togleTableContent('P-1.25-0-0',this);return false;">Over/Under +1.25 </a></strong><span class="avg chunk-odd-payout"></span><span class="avg chunk-odd nowrp"></span><span class="avg chunk-odd nowrp"></span>
                <span
                    class="odds-cnt">(0)</span><span class="odds-co"><a class="more" href="" onclick="page.togleTableContent('P-1.25-0-0',this);return false;">Compare odds</a></span></div>
        </div>

Я пытаюсь получить доступ к следующей части: span class = "odds-co"> Сравнить шансы

Я пробовал все следующее:

#odds_rows = browser.find_elements_by_class_name('more')
# odds_rows=browser.find_elements_by_css_selector(".more")
# odds_rows=WebDriverWait(browser, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//*[@class='more']")))
odds_rows= WebDriverWait(browser, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".more")))
#odds_rows=WebDriverWait(browser, 10).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "more")))

In order to subsequently loop click through the identified fields:
for i in odds_rows:
    #browser.execute_script("arguments[0].click();", i)
    i.click()

However already in the step of identifying the fields I am getting a timeout error on all WebDriverWait attempts except for 
odds_rows=WebDriverWait(browser, 10).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "more")))
This option yields only one result:
[<selenium.webdriver.remote.webelement.WebElement (session="7cbc57173a57aadbc115264dff8ca620", element="3654f928-bca4-4033-9566-da9e6aa6294b")>]

Однако впоследствии этот результат не отображается.

Что я делаю не так?

0
BlackElefant 16 Янв 2021 в 13:20

2 ответа

Лучший ответ
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("https://www.oddsportal.com/soccer/chile/primera-division/curico-unido-o-higgins-CtsLggl6/#over-under;2;0.50;0")

driver.maximize_window()
odds_rows = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.table-header-light')))


for i in odds_rows:
    count = i.find_element_by_xpath('./span[@class="odds-cnt"]')
    elem = i.find_elements_by_xpath('.//*[contains(text(),"Compare")]')
    txt = count.text

    if txt != '' and len(elem):
       elem = elem[0]
       driver.execute_script("arguments[0].scrollIntoView();", elem)
       elem.click()

Проблема в том, что строка со счетчиком "" не отображается, и вы не можете щелкнуть по ней.

0
PDHide 16 Янв 2021 в 15:25

Если вы нажмете «Сравнить шансы», вы увидите URL-адрес, который меняется с https: / /www.oddsportal.com/soccer/chile/primera-division/curico-unido-o-higgins-CtsLggl6/#over-under;2

https://www.oddsportal.com/soccer/chile/primera-division/curico-unido-o-higgins-CtsLggl6/#over-under;2;0.50;0

Если вы последуете за щелчком, вы увидите, что последняя часть: 2; 0,50; 0 увеличится на 0,5 следующий https://www.oddsportal.com/soccer/chile/primera-division/curico-unido-o-higgins-CtsLggl6/#over-under;2;1.00;0

https://www.oddsportal.com/soccer/chile/primera-division/curico-unido-o-higgins-CtsLggl6/#over-under;2;1.50;0 и продолжаем ...

По-другому у вас есть этот класс: "таблица-основные подробности-коэффициенты сортировки" по умолчанию скрыта, потому что есть данные, вам НЕ нужно щелкать. Вы можете отказаться от этого урока, надеюсь, он будет вам полезен.

0
Javix64 16 Янв 2021 в 12:22