Как через xpath вытащить текст из нужного класса если их 2



  • get запрос вернул код страницы (часть кода).
    нужно вытащить список класса c-events-scoreboard__item, но их 2 нужен 1

    пробовал через xpath запрос //*[contains(@class,'c-events-scoreboard__item')], вытаскиваются все 6 нужны 1-3-5. На форуме нашел [2] вот такой символ (будем так его называть). присасывается например /div/div/div[2] я так понял, это то что мне нужно, но как применить, всю голову сломал
    выкладываю часть

    <div class="c-events__item c-events__item_col">
                    <div class="c-events__item c-events__item_game c-events-scoreboard__wrap">
                                <div class="c-events-scoreboard">
                        <div class="c-events-scoreboard__item">
                                                        <button data-id="256724118" class="c-events__to-top" title="TOP">
                                    <svg class="top-icon">
                                        <use xlink:href="/default/img/zone-icons/icon-top.svg#Capa1"></use>
                                    </svg>
                                </button>
                                                        <a href="live/Mortal-Kombat/1252965-Mortal-Kombat-X/256724118-Mileena-Scorpion/" class="c-events__name">
                                <span class="c-events__teams">
                                    <span class="n"
                                          title="Милина — Скорпион   . 1195">
                                                                                <span class="c-events__team">Милина </span>
                                            <span class="c-events__team">Скорпион </span>
                                                                              1195                                </span>
                                </span>
                            </a>
                                                        <div class="c-events-scoreboard__lines">
                                    <div class="c-events-scoreboard__line">
                                        <span class="c-events-scoreboard__ball">
                                                                                </span>
                                        
                                                                                <span class="c-events-scoreboard__cell c-events-scoreboard__cell--all">5</span>
                                        
                                                                        </div>
                                    <div class="c-events-scoreboard__line">
                                        <span class="c-events-scoreboard__ball">
                                                                                </span>
                                        
                                                                                <span class="c-events-scoreboard__cell c-events-scoreboard__cell--all">4</span>
                                        
                                                                        </div>
                                </div>
                                                </div>
                        <div class="c-events-scoreboard__item">
                            <div class="c-events-scoreboard__subitem">
                                <div class="c-events__favorite"></div>
                                <div class="c-events__time  ">
                                                                        <span>13:52</span>
                                                                                                                                        <span class="c-events__overtime">Игра завершена</span>
                                                                </div>
                                <div class="c-events__icons">
                                                                                                                                                                                                                                                                                                                                                                                                                </div>
                            </div>
                            <div class="c-events__more-wrap">
                                    <a class="c-events__more c-events__more_bets js-showMoreBets">
                                        +                                </a>
                                                        </div>
                        </div>
                    </div>
                
                <div class="c-bets">
                        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
        <a class="c-bets__bet c-bets__bet_coef c-bets__bet_sm non  ">
            -    </a>
                </div>
            </div>
        </div>
    
                <div class="c-events__item c-events__item_col">
                    <div class="c-events__item c-events__item_game c-events-scoreboard__wrap">
                                <div class="c-events-scoreboard">
                        <div class="c-events-scoreboard__item">
                                                        <button data-id="256726611" class="c-events__to-top" title="TOP">
                                    <svg class="top-icon">
                                        <use xlink:href="/default/img/zone-icons/icon-top.svg#Capa1"></use>
                                    </svg>
                                </button>
                                                        <a href="live/Mortal-Kombat/1252965-Mortal-Kombat-X/256726611-Reptile-Kung-Lao/" class="c-events__name">
                                <span class="c-events__teams">
                                    <span class="n"
                                          title="Рептилия — Кунг Лао   . 1198">
                                                                                <span class="c-events__team">Рептилия </span>
                                            <span class="c-events__team">Кунг Лао </span>
                                                                              1198                                </span>
                                </span>
                            </a>
                                                        <div class="c-events-scoreboard__lines">
                                    <div class="c-events-scoreboard__line">
                                        <span class="c-events-scoreboard__ball">
                                                                                </span>
                                        
                                        
                                                                        </div>
                                    <div class="c-events-scoreboard__line">
                                        <span class="c-events-scoreboard__ball">
                                                                                </span>
                                        
                                        
                                                                        </div>
                                </div>
                                                </div>
                        <div class="c-events-scoreboard__item">
                            <div class="c-events-scoreboard__subitem">
                                <div class="c-events__favorite"></div>
                                <div class="c-events__time  ">
                                                                        <span>01:07</span>
                                                                                                                                </div>
                                <div class="c-events__icons">
                                                                                                                                                                                                                                                                                                                                                                                                                </div>
                            </div>
                            <div class="c-events__more-wrap">
                                    <a class="c-events__more c-events__more_bets js-showMoreBets">
                                        +35                                </a>
                                                        </div>
                        </div>
                    </div>
                ```


  • @Alexx5l6 добавить такое к запросу

    //*[contains(@class,'c-events-scoreboard__item')]>AT>0
    

    где вместо 0 нужно подобрать свою цифру для нужного результата.



  • @bigorat не пойдет, я получаю список одним действием



  • @Alexx5l6 и что что одним действием ,если одинаковые элементы есть то по индексу найти через AT



  • ![alt text](Screenshot_82.png image url) мне нужен список игроков. Делаю через get запрос. как указать, чтобы брался только первый. На данный момент в список попадает и второй.



  • @bigorat В цикле могу сделать, когда обращаюсь несколько раз, а тут мне нужно из текстового кода одним действием вытащить список с данным классом и если я укажу AT, то у меня вообще ни чего не происходит список пуст (это и логично). В код //*[contains(@class,'c-events-scoreboard__item')] нужно что-то дописать, указать чтобы брались 1 блок (как на скриншоте)



  • @Alexx5l6 кинь под спойлер лучше полный код страницы ответа GET запроса, коме заголовков, в режиме кода форума, так проще найти будет вариант.



  • @bigorat не отправляет пишет слишком длинное сообщение.
    я еще криво объясняю, терминов не знаю. Если решений в одно действия не найду, буду фильтровать потом в ресурсе через содержит. Хотелось бы код сократить и меньше операций



  • @Alexx5l6 ну в текстовик закинь и на яндекс или маил выложи код страницы





  • @Alexx5l6 эти данные нужно вытягивать?

    e0a0e5b7-3aa3-4081-ae95-2949bcb0b56b-изображение.png

     >XPATH> //div[@class="c-events-scoreboard"]//span[@class="c-events__teams"]>AT>0
    


  • @bigorat запросы делаю в HTTP клиент, получить каждый текс. AT не применимо



  • @Alexx5l6 ну я незнаю чем отличается ответ в http клиенте от той же сохраненной страницы браузерв:) Покажи на скрине что нужно конкретно выдрать, если ты получаешь не одиночный элемент а сразу несколько, то есть фактически список.



  • @bigorat Screenshot_83.png

    мой код, этим кодом получаю список

    Screenshot_84.png

    имя игроков
    время
    имя игроков
    время
    имя игроков
    время

    а мне нужно
    только
    имя игроков
    имя игроков
    имя игроков

    имя игроков и время у них одинаковый класс, если парсить отдельно то AT подойдет, выбор имя игрока или время.

    Я уже получаю список вот этой камандой //*[contains(@class,'c-events-scoreboard__item')] весь, но мне нужно ограничиться только именем игроков, отсеять 2 совпадение по этому же классу



  • @Alexx5l6 ну если так должно быть
    a422293c-d38a-4a63-8031-55adb3d1da0c-изображение.png

    то тогда так нужно

    //div[@class="c-events-scoreboard__item"]//span[contains(@class, "c-events")]/descendant-or-self::span[2]
    


  • @bigorat said in Как через xpath вытащить текст из нужного класса если их 2:

    //div[@class="c-events-scoreboard__item"]//span[contains(@class, "c-events")]/descendant-or-self::span[2]

    красавчег, это еще не все, понадобиться еще помощь) скинь в ЛС киви


Log in to reply