如何在有/没有废弃网页的情况下读取 div 详细信息,这在 java 源代码中不存在?

How to read a div details with / without scrapping web page which is not present in source code in java?

提问人:Ashish Bhoya 提问时间:10/30/2022 更新时间:10/30/2022 访问量:49

问:

我有一个用例,我想在边缘商店中读取已发布扩展的版本。 任何已发布扩展的链接如下 -> https://microsoftedge.microsoft.com/addons/detail/incognito-adblocker/efpgcmfgkpmogadebodiegjleafcmdcb

现在,我面临的问题是版本所在的跨度。( Span ID 是 “versionLabel” ),有一个名为 “root” 的父 div。现在,如果我们检查它并检查它,我们可以看到这个“根”div 的所有子 div。但是,如果我们看到此页面的来源( Ctrl + U )。这个 div 总是显示为空,没有细节。

    <div id="root" style="min-height: 100vh"></div>

我正在使用 Jsoup 解析此页面并获取此详细信息,但因为这个 div“root”是空的。我无法阅读此“verisonLabel”详细信息。有什么办法可以做到这一点吗?

请参考我已经尝试过但没有奏效的方法。

1.

String URL = "https://microsoftedge.microsoft.com/addons/detail/incognito-adblocker/efpgcmfgkpmogadebodiegjleafcmdcb";
Document doc = Jsoup.connect(URL).get();
Element version = doc.getElementById("versionLabel");
Document demo = Jsoup.parse(URL);
Element newHere = demo.getElementById("versionLabel");
        WebDriver driver = new ChromeDriver();
        driver.get(URL);
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        WebElement e = driver.findElement(By.xpath("//*[text()='Get started free']"));
        System.out.println(e);
        
String webpage = "https://microsoftedge.microsoft.com/addons/detail/incognito-adblocker/efpgcmfgkpmogadebodiegjleafcmdcb";
URL url = new URL(webpage);
        BufferedReader readr = 
          new BufferedReader(new InputStreamReader(url.openStream()));

        // Enter filename in which you want to download
        BufferedWriter writer = 
          new BufferedWriter(new FileWriter("Download.html"));
          
        // read each line from stream till end
        String line;
        while ((line = readr.readLine()) != null) {
            writer.write(line);
        }

        readr.close();
        writer.close();

在每种方式中,由于“根”div 本身是空的,因此我无法读取“versionLabel”范围。 有人可以在这里建议一些方法吗?

Selenium jsoup html 解析 microsoft-edge-extension

评论

0赞 Kendrick Li 10/31/2022
如果您使用的是 Selenium,则只需通过 找到任何元素。这与在 devtools 中检查的方式相同。您可以尝试@AbiSaran的解决方案。find_element
0赞 Janez Kuhar 11/15/2022
而且你不能使用 jsoup 抓取动态网页。

答:

1赞 AbiSaran 10/30/2022 #1

这将从“versionLabel”中获取版本:

driver.find_element(By.XPATH, "(//span[@id='versionLabel'])[2]").text