java - 我如何告诉 HtmlUnit 的 WebClient 下载图像和 css?

标签 java htmlunit

如何让 WebClient 像通常的网络浏览器一样下载外部 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");
}

关于java - 我如何告诉 HtmlUnit 的 WebClient 下载图像和 css?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2244272/

相关文章:

java - 如何将 slf4j 记录到 cuba Framework 中的文件

java - 如何在 SpannableStringBuilder 中将可绘制对象放置在 2 个字符串资源之间而不使用索引号

java - 即使启用了 javascript,HtmlUnitDrivers 向下滚动页面也无法在 java 中工作

java - 防止 HTMLUnit 日志系统干扰 Logback

java - 检查 Android 模拟器是否处于静音铃声模式

java - 我如何在 Java 中去隔行扫描图像?

java - 在 JPQL 中选择新的

java - 如何在Java中通过HtmlUnit在超链接上生成多次展示?

java - HTMLUNIT v. 2.15 Bug 线程死锁

ssl - 在 HtmlUnit 库中打开 SSL 网络浏览器连接