这些是您的框架所
javascript翻译的脚本错误
Java exceptions。
这是因为您尚未将的
setThrowExceptionOnscriptError选项显式设置
WebClient为
false。
除非中绝对没有错误
js,否则始终将其设置为false很有用,除非它会干扰您要查找的结果。
通常,这些是我的
webclient设置有问题时
js和
ajax通过
HtmlUnit。
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17, PROXY_HOST, PROXY_PORT);WebRequest request = new WebRequest(new URL( "http://steamcommunity.com/id/bobcatchris/inventory#730"));webClient.getOptions().setThrowExceptionOnscriptError(false);webClient.setJavascriptTimeout(10000);webClient.getOptions().setJavascriptEnabled(true);webClient.setAjaxController(new NicelyResynchronizingAjaxController());webClient.getOptions().setTimeout(10000);HtmlPage page = webClient.getPage(request); String script="var list = [];n" + "n" + "n" + "var size = Object.keys(g_ActiveInventory.rgInventory).size();n" + "n" + "n" + "n" + "var counter = 0;n" + "n" + "while (counter < size) {n" + " list.push(g_ActiveInventory.rgInventory[Object.keys(g_ActiveInventory.rgInventory)[counter]].market_name);n" + " counter +=1;n" + "}"; Object result = page.executeJavascript(script).getJavascriptResult(); System.out.println(result);如果我尝试使用您的代码,则使用上述设置,我会
150.0打印到控制台上,并认为该控制台可以正常工作。
编辑:
要遍历整个数组
list:
String script="var list = [];n" + "n" + "n" + "var size = Object.keys(g_ActiveInventory.rgInventory).size();n" + "n" + "n" + "n" + "var counter = 0;n" + "n" + "while (counter < size) {n" + " list.push(g_ActiveInventory.rgInventory[Object.keys(g_ActiveInventory.rgInventory)[counter]].market_name);n" + " counter +=1;n" + "}" + "list"; Object result = page.executeJavascript(script).getJavascriptResult(); if (result instanceof NativeArray) { for (Object obj : (NativeArray)result) { System.out.println(obj); } }上面,我更改了
js将列表包括在内作为返回参数,并进行迭代
NativeArray以获取每个元素。
输出:
P2000 | Scorpion (Factory New)AK-47 | Black Laminate (Field-Tested)★ StatTrak™ Karambit | Case Hardened (Minimal Wear)CS:GO Case KeyCS:GO Case Key
您可以在其常见问题解答-
这里阅读有关其Ajax设置的更多信息。



