java - 如何使用java单击网页上的超链接而不在浏览器中打开页面

标签 java html hyperlink

所以我试图制作一个文件下载器,它将根据超链接的内容或名称来下载文件,我将如何在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 解析器/抓取器,但它不与网页交互。如果您想单击链接或以其他方式与网页交互,则需要使用模拟 Web 浏览器的库,例如 HTMLUnit .

例如,以下代码将单击 HTMLUnit 主页上的“Home”链接。此代码根据 name 属性搜索特定 anchor (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() 方法。

关于java - 如何使用java单击网页上的超链接而不在浏览器中打开页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30651972/

相关文章:

java - 将对象类型转换为整数

javascript - 使用一个选择来确定表单上的哪些其他选择可见

html - max-width 不改变我的 div 的宽度

html - 背景位置属性无法使图像居中

join - ArangoDB 链接文档

php - HTML 使 <p> 元素中的链接可点击,元素中填充了来自 PHP 的文本

java - 如何在JAVA中找到通用数据类型的大小?

java - 所有网络流量都经过 RMI 注册表吗?

java - 如何确定 "debug mode"是否启用

html - HTML 和 CSS 的基本 URL