Làm cách nào để tôi có thể làm cho WebClient tải xuống các biểu định kiểu css bên ngoài và các hình ảnh giống như một trình duyệt web thông thường?Làm thế nào tôi có thể nói với WebClient của HtmlUnit để tải xuống hình ảnh và css?
11
A
Trả lời
6
Những gì tôi đang làm ngay bây giờ là:
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");
}
0
HtmlUnit không tải xuống CSS hoặc hình ảnh. Họ là vô ích cho một trình duyệt không đầu ...
ngoái, tôi nghe nói về nó là ở đây, nhưng vé được đánh dấu riêng: http://osdir.com/ml/java.htmlunit.devel/2007-01/msg00021.html
1
nguồn: How to get base64 encoded contents for an ImageReader?
HtmlImage img = (HtmlImage) p.getByXPath("//img").get(3);
ImageReader imageReader = img.getImageReader();
BufferedImage bufferedImage = imageReader.read(0);
String formatName = imageReader.getFormatName();
ByteArrayOutputStream byteaOutput = new ByteArrayOutputStream();
Base64OutputStream base64Output = new base64OutputStream(byteaOutput);
ImageIO.write(bufferedImage, formatName, base64output);
String base64 = new String(byteaOutput.toByteArray());
1
đây là những gì tôi đã đưa ra:
public InputStream httpGetLowLevel(URL url) throws IOException
{
WebRequest wrq=new WebRequest(url);
ProxyConfig config =webClient.getProxyConfig();
//set request webproxy
wrq.setProxyHost(config.getProxyHost());
wrq.setProxyPort(config.getProxyPort());
wrq.setCredentials(webClient.getCredentialsProvider().getCredentials(new AuthScope(config.getProxyHost(), config.getProxyPort())));
for(Cookie c:webClient.getCookieManager().getCookies(url)){
wrq.setAdditionalHeader("Cookie", c.toString());
}
WebResponse wr= webClient.getWebConnection().getResponse(wrq);
return wr.getContentAsStream();
}
xét nghiệm của tôi cho thấy, rằng nó proxys hỗ trợ và rằng nó không chỉ mang cookie từ WebClient, mà còn nếu máy chủ gửi cookie mới trong phản ứng, WebClient sẽ ăn những cookie
Các vấn đề liên quan
- 1. Làm thế nào để tải ajax với HtmlUnit?
- 2. Trong Java và HtmlUnit, làm cách nào để đợi trang kết quả tải xuống và tải xuống dưới dạng HTML?
- 3. (làm cách nào) tôi có thể tải xuống hình ảnh bằng JSoup không?
- 4. Làm thế nào để tải lên hình ảnh với hình ảnh xem trước bootstrap của Jasny?
- 5. Làm thế nào để nói curl để kiểm tra sự tồn tại của tập tin trước khi tải xuống?
- 6. làm thế nào để làm cho hình ảnh của tôi có thể bấm
- 7. Neo href của hình ảnh có tải xuống không?
- 8. Tại sao tải xuống hình ảnh của tôi với LWP của Perl cho tôi tệp có kích thước sai?
- 9. Làm thế nào tôi có thể tải hình ảnh Thư mục Máy tính trong JAVAFX
- 10. Làm thế nào tôi có thể cấu hình Hibernate để sử dụng SSL để nói chuyện với máy chủ DB?
- 11. Tải xuống hình ảnh có hình thu nhỏ
- 12. Lưu hình ảnh từ url bằng HTMLUnit
- 13. Làm cách nào để tải xuống hình ảnh (jpg) qua webclient và lưu vào bộ nhớ bị cô lập trên Windows Phone 7?
- 14. SDK iPhone: UIWebView để dừng hình ảnh tải/tải xuống
- 15. Tải xuống hình ảnh từ trang web trong .NET/C#
- 16. Làm thế nào tôi có thể nói với Cabal phụ thuộc để sử dụng?
- 17. Làm thế nào tôi có thể kiểm soát PhantomJS để bỏ qua tải xuống một số loại tài nguyên?
- 18. Python: URL phù hợp để tải xuống hình ảnh từ Tìm kiếm Hình ảnh của Google
- 19. Có thể tạo một nút hướng xuống dưới (bao gồm hình ảnh) chỉ với CSS không?
- 20. tải trước hình ảnh với hình nền css?
- 21. Làm thế nào tôi có thể nói với git mà vim để sử dụng?
- 22. .NET: Tôi có cần giữ tham chiếu đến WebClient khi tải xuống không đồng bộ không?
- 23. Làm thế nào để xác định kích thước của hình ảnh mà không cần tải xuống (đầy đủ)?
- 24. Tải xuống tệp/hình ảnh với AFNetworking trong iOS?
- 25. Hình ảnh mới(), làm cách nào để biết hình ảnh có tải 100% hay không?
- 26. làm thế nào tôi có thể chuyển đổi một hình ảnh RGB sang CMYK và ngược lại trong Java?
- 27. Làm thế nào tôi có thể phát hiện thông số kỹ thuật hình ảnh của khách hàng với javascript
- 28. Làm thế nào để nói với Ivy để đặt các lọ đã tải xuống trong một thư mục tùy chỉnh?
- 29. Làm thế nào tôi có thể bắt các ảnh JPEG bị hỏng khi tải ảnh có imread() trong OpenCV?
- 30. tải trước hình ảnh CSS ẩn
gì nếu người dùng muốn kiểm tra các css hoặc hình ảnh với một trình duyệt không đầu? Điều đó dường như được ngụ ý bởi câu hỏi. Tôi đoán css và hình ảnh sẽ không vô ích, phải không? Trong thực tế, đó là những gì đã dẫn tôi đến câu hỏi này, nó sẽ là tốt đẹp nếu tôi có thể sử dụng một trình duyệt không đầu để kiểm tra một hình ảnh bằng kích thước hoặc băm hoặc một css cho các giá trị của một màu nền. Đang cố gắng giúp đỡ ở đây ... câu trả lời của bạn đi ra một chút tranh cãi hơn là xây dựng. – fooMonster