You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HtmlUnit爬取代理时出现DefaultCssErrorHandler报错如何解决?

解决HtmlUnit爬取代理时的CSS解析警告问题

嘿,我来帮你搞定这个CSS警告的问题!这些警告其实是因为目标网站的grid.css文件内容有问题——它返回的不是标准的CSS代码,可能混了HTML标签,导致HtmlUnit的CSS解析器报错了。不过别担心,这不会影响你爬取代理IP和端口的核心逻辑,只是日志有点烦人而已。如果想彻底消除这些警告,可以试试下面的两种方法:

方法一:自定义CSS错误处理器,忽略所有警告和错误

你可以给WebClient设置一个空的CssErrorHandler,这样就不会输出那些烦人的警告了:

List<HtmlElement> ips = null;
List<HtmlElement> ports = null;
ArrayList<String> proxies = new ArrayList<>();
HtmlPage page = null;
String baseUrl = "http://www.freeproxylists.net/";
WebClient client;

try {
    client = new WebClient();
    client.getOptions().setJavaScriptEnabled(false);
    // 添加这一行,忽略CSS错误和警告
    client.setCssErrorHandler(new SilentCssErrorHandler());
    
    page = client.getPage(baseUrl);
    ips = page.getByXPath("//table[@class='DataGrid']/tbody/tr/td[position()=1]/text()");
    ports = page.getByXPath("//table[@class='DataGrid']/tbody/tr/td[position()=2]/text()");
    
    for(int i=0; i<ips.size(); i++){
        String proxy = ips.get(i) + ":" + ports.get(i);
        proxies.add(proxy);
        System.out.println(proxy);
    }
} catch(Exception e){
    System.out.println(e);
}

方法二:直接禁用CSS解析(更简单)

既然你只需要爬取HTML里的IP和端口,完全不需要处理CSS样式,直接禁用CSS解析就好了:

List<HtmlElement> ips = null;
List<HtmlElement> ports = null;
ArrayList<String> proxies = new ArrayList<>();
HtmlPage page = null;
String baseUrl = "http://www.freeproxylists.net/";
WebClient client;

try {
    client = new WebClient();
    client.getOptions().setJavaScriptEnabled(false);
    // 禁用CSS解析
    client.getOptions().setCssEnabled(false);
    
    page = client.getPage(baseUrl);
    ips = page.getByXPath("//table[@class='DataGrid']/tbody/tr/td[position()=1]/text()");
    ports = page.getByXPath("//table[@class='DataGrid']/tbody/tr/td[position()=2]/text()");
    
    for(int i=0; i<ips.size(); i++){
        String proxy = ips.get(i) + ":" + ports.get(i);
        proxies.add(proxy);
        System.out.println(proxy);
    }
} catch(Exception e){
    System.out.println(e);
}

另外,我帮你把代码的缩进和格式调整了一下,看起来更清晰啦~

内容的提问来源于stack exchange,提问作者Massimo Simone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:12:51