永发信息网

谁知道如何屏蔽掉htmlunit抛出的各种异常

答案:3  悬赏:60  手机版
解决时间 2021-02-06 15:30
  • 提问者网友:心牵心
  • 2021-02-05 16:18
我用htmlUnit抓取页面,抓取过程中控制台总是抛出一大堆乱七八糟的东西。
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
这俩属性已经设置了,但还是不管用。求高人知道,还有什么方法呀。
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-02-05 17:40
在main函数里面加上:

1
2
3
4
5
6
7

LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit")
.setLevel(Level.OFF);

java.util.logging.Logger.getLogger("org.apache.commons.httpclient")
.setLevel(Level.OFF);

追问:
不管用呀,还是往外抛

追答:
是不是这些代码所在的位置的问题,我测试了一个简单的只是下载网页源码的类,放在最前面不会抛异常,放在HtmlPage page = client.getPage(url);的后面就会抛异常。

可以添加代码如下: 1 WebClient client = new WebClient(); 2 3 client.setIncorrectnessListener(new SilentIncorrectnessListener()); 4 //js异常控制主要的一步 5 client.getOptions().setJavaScriptEnabled(false); 6 client.setCssErrorHandler(new QuietCssErrorHandler()); 7 client.getOptions().setThrowExceptionOnScriptError(false); 8 9 client.getOptions().setThrowExceptionOnFailingStatusCode(false);10 //设置日志级别11 java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
全部回答
  • 1楼网友:撞了怀
  • 2021-02-05 18:36
在main函数里面加上: LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log",    "org.apache.commons.logging.impl.NoOpLog"); java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit")     .setLevel(Level.OFF); java.util.logging.Logger.getLogger("org.apache.commons.httpclient")     .setLevel(Level.OFF);
  • 2楼网友:怙棘
  • 2021-02-05 18:05
client需要初始化,如果client初始化失败或者有问题,那么getpage方法就抛出相应的exception。明确异常的种类和阶段
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯