解析微博页面的时候,用xpath dd[1]/a,如果a标签有title或者a/li标签上面有title,就判断这个字符串值来给rs设置key赋值,没有在这些判断字符串里面的就放到一个list里面,结果很多a标签既没有title,a/i里面也没有title,导致将最后一个字符串写了多次进到list里面。代码如下
List<String> checks = new ArrayList<String>();
String check = "";
for(int k=0;k<as.length;k++){
TagNode aTag = (TagNode)as[k];
if(k==0){
map.put(Constants.USER_URL, formatUserParsedUrl(aTag.getAttributeByName("href")));
map.put(Constants.username, aTag.getText().toString());
continue;
}
if(aTag.getAttributeByName("title")!=null&&aTag.getAttributeByName("title").trim().length()>0){
check = aTag.getAttributeByName("title");
}else if(aTag.evaluateXPath("i").length>0){
TagNode img = (TagNode)aTag.evaluateXPath("i")[0];
check = img.getAttributeByName("title");
}
if(check.equals("")){
continue;
}
if(check.equals("微博个人认证")){
map.put(Constants.isChecked, 1);
map.put(Constants.userType, 1);
continue;
}else if (check.equals("微博机构认证")){
map.put(Constants.isChecked, 1);
map.put(Constants.userType, 2);
continue;
}else if(check.equals("微博会员")){
map.put(Constants.isVIP, 1);
continue;
}
checks.add(check);
check = "";
}
注意代码的逻辑,很多地方没有考虑到。