所以我试图制作一个文件下载器,它将根据超链接的内容或名称来下载文件,我将如何在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/