我正在使用HtmlUnit
用js代码解析html。页面结构是(使用Chrome开发者工具):
我的代码如下:
WebClient wc=new WebClient(BrowserVersion.INTERNET_EXPLORER_11);
wc.getOptions().setUseInsecureSSL(true);
wc.getOptions().setJavaScriptEnabled(true);
wc.getOptions().setCssEnabled(false);
wc.getOptions().setThrowExceptionOnScriptError(false);
wc.getOptions().setTimeout(10000);
wc.getOptions().setDoNotTrackEnabled(false);
HtmlPage page= wc.getPage(address);
List<HtmlDivision> items=(List<HtmlDivision>)page.getByXPath(
"/html/body/div[@id='wrapper']/div[@class='content_main']/div[@class='search_result']/div[@id='resultData']");
System.out.println(items);
if(items!=null && items.size()>0){
HtmlDivision resultMain=items.get(0);
List<HtmlDivision> appDivList=(List<HtmlDivision>)resultMain.getByXPath(".//div[contains(@class,'search_one')]");
System.out.println(appDivList);
for(HtmlDivision resultItem:appDivList){
try{
DomElement appImgInfo=resultItem.getFirstElementChild();
List<HtmlDivision> appInfoList=(List<HtmlDivision>)resultItem.getByXPath("./div[@class='one_right']");
String appName=null;
问题是当我调试此代码时,它工作正常。当我运行此代码时,
List<HtmlDivision> appDivList=(List<HtmlDivision>)resultMain.getByXPath(".//div[contains(@class,'search_one')]");
不起作用,即appDivList
为空,但是当我调试此代码时,appDivList
不为空。
谁知道为什么?
更新
我在
之前添加了一些Thread.sleep
代码
List<HtmlDivision> appDivList=(List<HtmlDivision>)resultMain.getByXPath(".//div[contains(@class,'search_one')]");
更新的代码是:
HtmlDivision resultMain=items.get(0);
try{
Thread.sleep(10000);
}catch(Exception e){}
List<HtmlDivision> appDivList=(List<HtmlDivision>)resultMain.getByXPath(".//div[contains(@class,'search_one')]");
System.out.println(appDivList);
有效!这是怎么发生的?