Лайк ютуб проверить существование. При разных отпечатках разная выдача



  • Приветствую коллеги.
    Такой вопрос

    Пример как лайк выдаётся у меня

    Нет лайка
    <yt-icon-button id="button" class="style-scope ytd-toggle-button-renderer style-text" aria-pressed="false">
    
    Есть лайк
    <yt-icon-button id="button" class="style-scope ytd-toggle-button-renderer style-default-active" aria-pressed="true">
    

    Меняется отпечаток, и совсем другие значения, Меняю другие отпечатки тоже меняется.

    Как сделать универсальный вариант для такой проблемки?
    Чтобы видно было не зависимо от отпечатка


  • administrators

    @neizwestnyi00 Через Xpath

    //yt-icon-button[@id="button"]/@aria-pressed
    


  • @Fox через Xpath тоже меняется при разных отпечатках


  • administrators

    @neizwestnyi00 Тогда приведи несколько примеров, либо пробуй через >MATCH>



  • @Fox

    Ненажата
     >XPATH> id("menu-container")/div[@id="menu"]/ytd-menu-renderer[@class="style-scope ytd-video-primary-info-renderer"]/div[@id="top-level-buttons"]/ytd-toggle-button-renderer[@class="style-scope ytd-menu-renderer force-icon-button style-text"]/a[@class="yt-simple-endpoint style-scope ytd-toggle-button-renderer"]/yt-icon-button[@id="button"]
    
    Нажата
     >XPATH> id("menu-container")/div[@id="menu"]/ytd-menu-renderer[@class="style-scope ytd-video-primary-info-renderer"]/div[@id="top-level-buttons"]/ytd-toggle-button-renderer[@class="style-scope ytd-menu-renderer force-icon-button style-default-active"]/a[@class="yt-simple-endpoint style-scope ytd-toggle-button-renderer"]/yt-icon-button[@id="button"]
    
    
    

    Ещё вариант

    Ненажата
     >XPATH> id("watch8-sentiment-actions")/span[@class="like-button-renderer actionable "]/span[1]/button[@class="yt-uix-button yt-uix-button-size-default yt-uix-button-opacity yt-uix-button-has-icon no-icon-markup like-button-renderer-like-button like-button-renderer-like-button-unclicked  yt-uix-post-anchor yt-uix-tooltip"]
    
    Нажата
     >XPATH> id("watch8-sentiment-actions")/span[@class="like-button-renderer actionable "]/span[2]/button[@class="yt-uix-button yt-uix-button-size-default yt-uix-button-opacity yt-uix-button-has-icon no-icon-markup like-button-renderer-like-button like-button-renderer-like-button-clicked yt-uix-button-toggled yt-uix-post-anchor yt-uix-tooltip"]
    

    Через >MATCH> тоже меняется постояно


  • administrators

    @neizwestnyi00 Примеры разного кода кнопки, от разных отпечатков.



  • @Fox Вот выше, это два разных отпечатка


  • administrators

    @neizwestnyi00 Ты мне скинул длинный, разный Xpath. А я прошу именно html код этих кнопок, чтобы сделать универсальный Xpath.



  • @Fox Html код

    1 -------------------
    
    <button class="yt-uix-button yt-uix-button-size-default yt-uix-button-opacity yt-uix-button-has-icon no-icon-markup like-button-renderer-like-button like-button-renderer-like-button-unclicked  yt-uix-post-anchor yt-uix-tooltip" type="button" onclick=";return false;" title="Мне понравилось" aria-label="Видео понравилось вам и ещё 12&nbsp;622&nbsp;пользователям" data-position="bottomright" data-post-data="se=8pH38AERCAASDQoLVmZKS1p6WWdaNjg%3D&amp;itct=CDcQpUEiEwjmlsPLucnaAhUHFrIKHcKrA3co-B0" data-orientation="vertical" data-force-position="true" data-post-action="/service_ajax?name=likeEndpoint"><span class="yt-uix-button-content">12&nbsp;622</span></button>
    
    
    
    2 -------------------
    
    <button id="button" class="style-scope yt-icon-button" aria-label="Видео понравилось вам и ещё 54&nbsp;пользователям"><yt-icon class="style-scope ytd-toggle-button-renderer"><svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 100%; height: 100%;"><g class="style-scope yt-icon">
            <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path>
          </g></svg>
        
        
      </yt-icon></button>
    


  • @neizwestnyi00
    вот же секта свидетелей xpath,

    общие слекторы бы ли бы

    [class*="button-renderer"]
    [class*="style-scope"]
    

    очевидно что они не будут уникальными, маловероятно что это признак лайка
    можно проверять

    [class*="toggle"]
    [class*="like"]
    

    поочереди



  • Я было дело тоже намучился с селекторами для ютуб. Селекторы там действительно меняются. Моим решением было:

    1. Переход на работу с мобильной версией
    2. Ограниченный список ЮА на которых все корректно работает.