【问题标题】:how do i click a hyperlink on a webpage using java without having the page open in browser如何使用java单击网页上的超链接而无需在浏览器中打开页面
【发布时间】:2015-08-19 13:04:25
【问题描述】:

所以我试图制作一个文件下载器,它将根据超链接所说或被调用的内容下载文件我将如何在 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);
    }

【问题讨论】:

    标签: java html hyperlink


    【解决方案1】:

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

    例如,以下代码将单击 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() 方法。

    【讨论】:

    • 由于某种原因,“HTMLAnchor anchor = page.getAnchorByName("Home");”中的“HTMLAnchor”出现错误找不到符号。我该怎么办?
    • 我没有在这台计算机上安装 java,但这可能是一个导入问题。你导入com.gargoylesoftware.htmlunit.html.HtmlAnchor了吗?
    • 好的,现在它可以工作了,HTMLAnchor 上的大写字母不需要它们。但现在出现错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2012-12-15
    • 2013-01-06
    相关资源
    最近更新 更多