如何使用 java 单击网页上的超链接,而无需在浏览器中打开网页

how do i click a hyperlink on a webpage using java without having the page open in browser

所以我正在尝试制作一个文件下载器,它将根据超链接所说或被调用的内容下载文件我将如何点击 java 中的超链接?

我正在尝试找到无需打开网页即可执行此操作的最简单方法。

我也试图在没有 java 脚本的情况下执行此操作,因为我不控制我只想从中下载的站点。

这是我一直在尝试的方法,但我一直收到错误 403。我该如何解决这个问题?

注意:这确实使用了 JSoup 库。

Document doc = Jsoup.parse(new URL(yourURLhere), 2000);

    Elements resultLinks = doc.select("a");
    System.out.println("number of links: " + resultLinks.size());
    for (Element link1 : resultLinks) {
        System.out.println();
        String href = link1.attr("href");
        System.out.println("Title: " + link1.text());
        System.out.println("Url: " + href);
    }

jSoup 库是一个 HTML parser/scraper,但它不与网页交互。如果您想点击 link 或以其他方式与网页交互,您将需要使用模拟网络浏览器的库,例如 HTMLUnit.

例如,以下代码将点击 HTML 单位主页上的 "Home" link。此代码根据 name 属性搜索特定锚点 (HTML link),但还有其他方法可以根据各种条件搜索其他类型的元素。有关详细信息,请参阅文档。

public void testHomePage() throws Exception { 
    final WebClient webClient = new WebClient(); 
    final URL url = new URL("http://htmlunit.sourceforge.net"); 

    final HtmlPage page = (HtmlPage)webClient.getPage(url); 

    HtmlAnchor anchor = page.getAnchorByName("Home"); 
    anchor.click();
}

如果您想使用 jSoup 的分析功能,您仍然可以将 HTMLUnit 与 jSoup 结合使用。在 HTML 单元加载页面后,您可以将 HTML 作为字符串传递给 jSoup 的 parse() 方法。