当前位置: 首页 > 面试题库 >

如何告诉HtmlUnit的WebClient下载图像和CSS?

裘嘉木
2023-03-14
问题内容

如何使WebClient像通常的Web浏览器一样下载外部CSS样式表和图像主体?


问题答案:

我现在正在做的是:

public static final HashMap<String, String> acceptTypes = new HashMap<String, String>(){{
        put("html", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        put("img", "image/png,image/*;q=0.8,*/*;q=0.5");
        put("script", "*/*");
        put("style", "text/css,*/*;q=0.1");
    }};

protected void downloadCssAndImages(HtmlPage page) {
        String xPathExpression = "//*[name() = 'img' or name() = 'link' and @type = 'text/css']";
        List<?> resultList = page.getByXPath(xPathExpression);

        Iterator<?> i = resultList.iterator();
        while (i.hasNext()) {
            try {
                HtmlElement el = (HtmlElement) i.next();

                String path = el.getAttribute("src").equals("")?el.getAttribute("href"):el.getAttribute("src");
                if (path == null || path.equals("")) continue;

                URL url = page.getFullyQualifiedUrl(path);

                WebRequestSettings wrs = new WebRequestSettings(url);
                wrs.setAdditionalHeader("Referer", page.getWebResponse().getRequestSettings().getUrl().toString());

                client.addRequestHeader("Accept", acceptTypes.get(el.getTagName().toLowerCase()));
                client.getPage(wrs);
            } catch (Exception e) {}
        }



client.removeRequestHeader("Accept");
}


 类似资料:
  • 理想情况下,我们希望添加一个任务,用于下载项目的第一级和可传递依赖项的所有源JAR。有办法做到这一点吗? 现在看来,这应该是默认的,至少对于第一级依赖项是这样,因为它提供了eclipse中的javadoc,这在完成代码时是非常好的。

  • 我想尝试下载图像点击按钮,但是当我点击按钮,所以不是下载图像,而是直接打开图像,但我想做下载图像,所以如何在reactjs下载图像?

  • 我有一个来自服务器的bas64编码图像,我想通过JavaScript强制下载。有可能吗?

  • 您可以使用Spring 5 WebFlux使用执行零拷贝上传和下载吗?

  • 我在使用htmlUnit WebDriver解析HTML页面时遇到了一些问题。我没有任何例外。我的代码如下所示: 在上面的XML页面源码中,我可以找到我的名字。所以,我似乎正确地记录了它。

  • 我试图下载和保存图像从网络使用python的模块。 以下是我使用的(工作)代码: 以下是使用