首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Java截取网页源代码的有关问题

2013-02-25 
Java截取网页源代码的问题网页源码如下....................div classneirong《疯狂

Java截取网页源代码的问题
========网页源码如下=========
..........
..........
<div class="neirong">
《疯狂android讲义》
<br />
第1章  android应用与开发环境1
<br />
1.1  android的发展和历史2
<br />
1.1.1  android的发展和简介2
<br />
1.1.2  android平台架构及特性3
<br />
..........
..........
<div class="read-more">

========================
要求:
1.以 class="neirong" 作为标识,真正截取的是从第1章开始,到<div class="read-more">结束。
2.去除<br />等杂项,最后希望呈现的String为:
================================
第1章  android应用与开发环境    1

1.1  android的发展和历史    2

1.1.1  android的发展和简介    2

================================
这种干净的格式
3.页码与前面的文字之间必须是TAB(制表符)!这点很重要!!
求高手指点思路,或提供源码,小弟感激不尽!!
[解决办法]

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class dsfg {
public static void main(String[] args){
String s="<div class="neirong">"
+"《疯狂android讲义》"+
"<br />"+
"第1章  android应用与开发环境1"+
"<br />"+
"1.1  android的发展和历史2"+
"<br />"+
"1.1.1  android的发展和简介2"+
"<br />"+
"1.1.2  android平台架构及特性3"+
"<br />"+
"...................."+
"<div class="read-more">";

Pattern p=Pattern.compile("<div class="neirong">(.*)<div class="read-more">");
Matcher m=p.matcher(s);
while(m.find()){

String[] a=m.group(1).split("<br />");
for(int i=2;i<a.length;i++){
Pattern pa=Pattern.compile("(.*)(\\d)");
Matcher ma=pa.matcher(a[i]);

while(ma.find()){

System.out.printf("%s\t%d\n",ma.group(1),Integer.parseInt((ma.group(2))));
}
}


}
}
}

[解决办法]
头和尾的===========没加
写成了一个工具类

String html="ss<p>kk</p>ss";
public static List<String> getContext2(String html) {

List<String> resultList = new ArrayList<String>();
        Pattern p = Pattern.compile("第一章(.*?)<div class="read-more">");//匹配<p>开头,</p>结尾的文档
        Matcher m = p.matcher(html );//开始编译
        while (m.find()) {
        String str=m.group(1);
        str=str.replaceAll("<br />", "");
            resultList.add(m.group(1));//获取被匹配的部分
        }
        return resultList;
    }

热点排行