虾米链接:http://2814704901.iteye.com/blog/1930426
之所以运用WebClient 是因为 我们有时候查看网页源代码的时候看到的只有js代码 经常遇到的就是【发布日期】
WebClient可以实现先把网页下载到一个指定路径 然后进行解析
不过 这里没有通过下载 而且直接解析WebClient获取到的HtmlPage
url:网页路径 code:编码 一般都是utf-8或者gb2312
public static ResultGetInfo getDom(String url,String code) throws FailingHttpStatusCodeException,
MalformedURLException, IOException {
ResultGetInfo rgi=new ResultGetInfo();
final WebClient webClient = new WebClient();
// WebClient 相当于一个浏览器
// 设置webClient的相关参数
webClient.setJavaScriptEnabled(true);
webClient.setCssEnabled(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.setTimeout(30000);
webClient.setThrowExceptionOnScriptError(false);
// 模拟浏览器打开一个目标网址
final HtmlPage page = (HtmlPage) webClient.getPage(url);
//摘要
String summary="";
if(url.contains("qq")&&url.contains("blog")){
//处理标题
title=HandlerSummary.getQQTitle(page);
String tt=title;
String t1=title.substring(0,title.lastIndexOf("."));
title=t1.substring(0,t1.lastIndexOf(".")-4);
summary=HandlerSummary.getQQSummary(page, title);
//标题:不能浅尝辄止 2013.8.4 2013.7.28
//把"."换成"-"
String t=tt.replace(".", "-");
//把字符串日期转换为Date类型的日期
d=GetDate.getTimeThread(t);
}
rg.setSummary(summary);
rg.setDate(d);
//关闭模拟浏览器
webClient.closeAllWindows();
return rgi;
}
//下面就是解析HtmlPage
//腾讯博客
public static String getQQSummary(HtmlPage page,String title){
String summary=title;
//blogDetailDiv
list.add("div");
//获取div中id=“blogDetailDiv ”的文本
//我这里是通过把Htmlpage对象转换为HtmlElement对象集合
List<HtmlElement> x=page.getDocumentElement().getHtmlElementsByTagNames(list);
for(int i=0;i<x.size();i++){
HtmlElement element=x.get(i);
if(element.getAttribute("id").equals("blogDetailDiv")){
summary=element.asText();
break;
}
}
return summary;
}
//遍历HtmlElement集合 这里和遍历org.jsoup.select.Elements是一样的道理!