有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

html Java/HtmlUnit如何从HtmlImageInput获取HtmlImage?

我在html页面上有一个图像,也是一个输入

<input type="image" src=...

我一点也不在乎点击图片。我想把图像保存到一个文件中。这似乎是不可能的,这似乎很荒谬。我试着从HtmlImageInput转换到HtmlImage,但我只是得到了一个错误。我该怎么做?我需要从HtmlUnit切换到其他东西吗?我不在乎我需要做什么来完成这件事

顺便说一句,我试着使用selenium并拍摄了一个截图,但它拍摄了一个错误区域的截图。对同一元素尝试了多个不同的XPath,但总是截图错误


共 (2) 个答案

  1. # 1 楼答案

    谢谢你的报道

    HtmlImage类似,.saveAs(File)只是addedHtmlImageInput

    顺便说一句,如果你不能使用最新的快照,那么你可以使用:

    try (WebClient webClient = new WebClient()) {
        HtmlPage page = webClient.getPage("http://localhost:8080");
        HtmlImageInput input = page.querySelector("input");
        URL url = page.getFullyQualifiedUrl(input.getSrcAttribute());
        final String accept = webClient.getBrowserVersion().getImgAcceptHeader();
        final WebRequest request = new WebRequest(url, accept);
        request.setAdditionalHeader("Referer", page.getUrl().toExternalForm());
        WebResponse imageWebResponse =  webClient.loadWebResponse(request);
    }
    
  2. # 2 楼答案

        HtmlImage codeImg = (HtmlImage) findElement(xpath, index);
        InputStream is = null;
        byte[] data = null;
        try {
            is = codeImg.getWebResponse(true).getContentAsStream();
            data = new byte[is.available()];
            is.read(data);
        } catch (IOException e) {
            log.error("get img stream meets error :", e);
        } finally {
            IOUtils.closeQuietly(is);
        }
        if (ArrayUtils.isEmpty(data)) {
            String errorMessage = String.format("downLoad img verify code with xpath %s failed.", xpath);
            throw new EnniuCrawlException(TargetResponseError.ERROR_RESPONSE_BODY, errorMessage);
        }
        String base64Img = Base64Utils.encodeToString(data);