从视频管理器获取所有YouTube视频ID /网址

时间:2015-01-27 00:50:51

标签: java html css youtube selenium-webdriver

我使用Selenium登录我的Google帐户并访问YouTube

现在,在视频管理器上,我想获取所有视频ID。我尝试复制CSSSelectorXPath developer tools Chrome给我的List<WebElement> allVideoUrls = driver.findElements(By.cssSelector("my-selector-which-gives-all-videos-on-page")); ,但每个都包含视频ID,这使得它们无法像这样使用:

public void getVideoInformation()
{
    // Visit video manager
    driver.get("https://www.youtube.com/my_videos?o=U");

    // Wait until video list has loaded
    new WebDriverWait(driver, 10).until(ExpectedConditions
            .visibilityOfElementLocated(By
                    .cssSelector("#vm-playlist-video-list-ol")));

    // Return all links on page
    List<WebElement> allLinks = driver.findElements(By.tagName("a"));

    HashSet<String> videoLinks = new HashSet<>();

    for (int linksIndex = 0; linksIndex < allLinks.size(); linksIndex++)
    {
        String link = driver.findElements(By.tagName("a")).get(linksIndex)
                .getAttribute("href");
        try
        {
            if (link.contains("edit"))
            {
                System.out.println(link);

                // No duplicates
                videoLinks.add(link);
            }
        } catch (Exception error)
        {
            error.printStackTrace();
        }
    }
   // ...
}

请注意,我必须登录才能看到&#34;&#34;不公开或私人视频也是如此。

到目前为止,我的执行情况很糟糕,有时因某些原因无法正常工作。我首先获取页面上的所有链接,只返回用于编辑视频的链接。为了避免StaleElementReferenceException我在循环内再次检索所有链接。

{{1}}

我很好,因为我需要加载所有其他页面以获取所有视频,但请帮助我找到一种有效/可靠的方式来获取视频ID。

0 个答案:

没有答案