解析 通过模拟浏览器得到的HtmlPage

虾米链接: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是一样的道理! 

你可能感兴趣的:(html)