网站加载了javascript后,如何解析网站?

时间:2019-06-06 21:11:53

标签: javascript java selenium-webdriver selenium-chromedriver jsoup

我想在加载javascript之后显示网页HTML,以便我可以准确地表示表格。

我尝试过使用其他罐子,但这是唯一一个对我有用的罐子,因为其余的罐子看起来已经过时了。

System.setProperty("webdriver.chrome.driver", "D:\\Download bestanden\\chromedriver_win32\\chromedriver.exe");

    ChromeOptions options = new ChromeOptions();
    //options.addArguments("headless");
    WebDriver driver = new ChromeDriver(options);

    driver.get("https://www.flashscore.com/");
    System.out.println(driver.getTitle());

    Document doc = Jsoup.parse(driver.getPageSource());
    System.out.println(doc.select("ul.submenu.hidden li a").text());
    driver.close();
    driver.quit();
    System.out.println("Completed");

如果我搜索lmenu_17,希望得到的结果比阿尔巴尼亚的Superlinga更多,那么我希望第一部分的阿尔巴尼亚杯和超级杯能像在检查员中一样显示。 在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

        ChromeDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("https://www.flashscore.com/");

        //works after the page is fully loaded.
        //goes to a bottom line.

        string href = driver.FindElementByXPath("//*[@id='lmenu_17']/ul/li[1]/a").GetAttribute("href"); // albanian link
        //driver.Navigate().GoToUrl(href);

        foreach (var element in driver.FindElements(By.XPath("//*[@id='lc']/div[6]/ul/li/a")))
        {
            Console.WriteLine(element.GetAttribute("href"));
        }

        driver.FindElementByXPath("//*[@id='lc']/div[6]/ul/li[12]/a").Click();
        Thread.Sleep(1000);

        foreach (var element in driver.FindElements(By.XPath("//*[@id='lc']/div[9]/ul/li/a")))
        {
            Console.WriteLine(element.GetAttribute("href"));
        }

        Console.ReadKey();

您不需要获取页面源。

picture of working 不知道有没有用如果我能帮上忙的话。