如何在没有在浏览器中打开页面的情况下使用java单击网页上的超链接

时间:2015-06-04 18:59:57

标签: java html hyperlink

所以我试图制作一个文件下载程序,根据超链接所说的内容下载文件,或者如何在java中点击超链接?

我试图通过打开网页找到最简单的方法。

我也试图在没有java脚本的情况下这样做,因为我不控制网站我只想从它下载。

这是我一直在尝试但我一直在收到ERROR 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);
    }

1 个答案:

答案 0 :(得分:3)

jSoup库是一个HTML解析器/ scraper,但它不与网页交互。如果要单击链接或以其他方式与网页交互,则需要使用模拟Web浏览器的库,例如HTMLUnit

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

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结合使用。在HTMLUnit中加载页面后,您可以将HTML作为字符串传递给jSoup的parse()方法。