gpt4 book ai didi

java - 使用 Java 从 javascript 链接获取 html 更改

转载 作者:行者123 更新时间:2023-12-02 04:48:45 25 4
gpt4 key购买 nike

到目前为止,我一直在使用 JSOUP 来满足我所有的 html 网站需求。然而,我遇到了障碍。 Kickass 通过单击 javascript 链接 <a href="javascript:getFiles('52261EB9480EDFD83B5B85C8C4817D28F3AE0C95', 1);" class="showmore folded"> 获取每个 torrent 中的完整文件列表。 。我已将 javascript 函数追溯到所使用的 *.js 文件,但我不确定如何模仿这种行为。理想情况下,我只想从主站点获取 javascript 链接,并像处理任何其他网站一样获取列表,尽管 JSOUP 的所有内容似乎都遵循 html 链接而不是 javascript 链接。

所以我尝试使用 HtmlUnit。我用 chrome 检查了该网站: https://kickass.to/australian-aria-top-50-singles-13-10-2014-t9702189.html

并复制 xpath 表达式。目前,下面的代码不起作用,虽然我想避免必须使用这个库来实现单个函数,但一般来说我无法让它工作。

我的测试代码:

    java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF);
WebClient webClient = new WebClient(BrowserVersion.CHROME);
HtmlPage page = webClient.getPage("https://kickass.to/australian-aria-top-50-singles-13-10-2014-t9702189.html");

HtmlElement htmlElement = page.getFirstByXPath("//*[@id=\"ul_top\"]/tbody/tr[31]/td[2]/a");
System.out.println(htmlElement.toString());
htmlElement.click();
webClient.waitForBackgroundJavaScript(1000);

//get changes here
webClient.closeAllWindows();

最佳答案

Jsoup 不执行 Javascript(据我迄今为止从许多问题中看到的)。您应该考虑使用 Selenium + HtmlUnitDriver (这是 headless 运行的)。我已经尝试过这个示例代码,页面源代码包含执行javascript后显示的内容。

示例代码:

//set javascript enabled to true
HtmlUnitDriver driver = new HtmlUnitDriver(true);

//to set logging off....
LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log","org.apache.commons.logging.impl.NoOpLog");
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);

// navigate to the page
driver.get("https://kickass.to/australian-aria-top-50-singles-13-10-2014-t9702189.html");
driver.executeScript("javascript:getFiles('52261EB9480EDFD83B5B85C8C4817D28F3AE0C95', 1);","");
//this is displayed only after executing the javascript
System.out.println(driver.getPageSource().contains("Australian ARIA Top 50 Singles 13.10.2014.pdf"));
System.out.println(driver.getPageSource().contains("47. Sheppard - Geronimo.mp3"));
//System.out.println(driver.getPageSource());
driver.quit();

关于java - 使用 Java 从 javascript 链接获取 html 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29442679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com