用htmlunit怎么去获取一个有JS加载的网页信息
答案:5 mip版
解决时间 2021-03-06 17:16
- 提问者网友:鉨瞞着所囿亾,爱着誰
- 2021-03-05 16:17
用htmlunit怎么去获取一个有JS加载的网页信息
最佳答案
- 二级知识专家网友:時光叫我忘了他
- 2021-03-05 17:43
有两种方式供选择我推荐第一种,一:去阅读相关的网页里的js和网页请求之后的header,通过hander知道这个获取这个信息的接口。通过httpclient来获知你想要的信息。二:通过htmlunit框架提供的方法:
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript("LoginSubmit();", "");这里的LoginSubmit就是页面里的js方法名称(页面里要有这个js方法,当然你也可以自己写一些js)。然后通过dom操作来获取你想要的信息。
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript("LoginSubmit();", "");这里的LoginSubmit就是页面里的js方法名称(页面里要有这个js方法,当然你也可以自己写一些js)。然后通过dom操作来获取你想要的信息。
全部回答
- 1楼网友:包子女孩
- 2021-03-05 20:17
可以试试jsoup吧。也是一个类似的工具。
再看看别人怎么说的。
- 2楼网友:無字情書
- 2021-03-05 19:35
在执行getPage方法之后 你是线程休眠一会(加载js需要时间) 然后试试看asXMl是不是你想要的结果
- 3楼网友:指间的落寞
- 2021-03-05 19:03
WebClient client = new WebClient(BrowserVersion.CHROME);
client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setJavaScriptEnabled(true);
client.getOptions().setActiveXNative(false);
client.getOptions().setCssEnabled(false);
client.waitForBackgroundJavaScript(60*1000);
client.setAjaxController(new NicelyResynchronizingAjaxController());
client.setJavaScriptTimeout(35000);
HtmlPage page = client.getPage(url); //这里是你要访问的地址
client.waitForBackgroundJavaScript(1000*3);
client.setJavaScriptTimeout(0);
Document document = Jsoup.parse(page.asXml());
client.closeAllWindows();
如果不懂可以搜一下各种设置的意思
- 4楼网友:萌逗
- 2021-03-05 18:04
在执行getPage方法之后
你是线程休眠一会(加载js需要时间)
然后试试看asXMl是不是你想要的结果
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上问答信息
推荐资讯