我要获取的是该http://v.youku.com/v_show/id_XMzI5NTIyNzMy.html页面源码中的<div class="stat stat_area">内容</div>,这个DIV中的内容,可是提取为空,正则表达式应该也没错,高手进来帮个帮。
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class testtest {
public StringBuffer getContent(URL url)
{
        StringBuffer contentBuffer = new StringBuffer();
        
try {
InputStreamReader istreamReader = new InputStreamReader(url.openStream());
        int ch = 0;
        //ch读取的字符,如果已到达流的末尾,则返回 -1
        while ((ch = istreamReader.read()) != -1)
         contentBuffer.append((char)ch);
        } catch (IOException e) {
         e.printStackTrace();
        }        return contentBuffer;
}

public String getVideoInf(StringBuffer contentString,String patternString)
{
String temp = "";  
List<String> list = new ArrayList<String>();  
Pattern pattern = Pattern.compile(patternString,Pattern.CANON_EQ);
Matcher matcher = pattern.matcher(contentString);
while(matcher.find())
{
list.add(matcher.group());
}

for(int i=0;i<list.size();i++)
temp += list.get(i);
return temp;
}
/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
testtest ddTesttest = new testtest();
String urlStr = "http://v.youku.com/v_show/id_XMzI5NTIyNzMy.html";
try {
StringBuffer stringBuffer = ddTesttest.getContent(new URL(urlStr));
String temp = ddTesttest.getVideoInf(stringBuffer,"<div class=\"stat stat_area\">(.*?)</div>");
System.out.println("test:\n"+temp);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}}

解决方案 »

  1.   

    你给div 加个Id属性
    document.getElementById("div的id").innerHTML
      

  2.   

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test { public String getContent(URL url) {
    StringBuilder builder = new StringBuilder();
    try {
    HttpURLConnection con = (HttpURLConnection)url.openConnection();
    con.connect();
    InputStream iStream = con.getInputStream();
    InputStreamReader isr = new InputStreamReader(iStream);
    BufferedReader br = new BufferedReader(isr);
    while(true){
    String line = br.readLine();
    if(line==null){
    break;
    }

    if(line.length()>0){
    builder.append(line.trim());
    }
    }
    } catch (IOException e) {
    return null;
    }
    return builder.toString();
    } public String getVideoInf(String content, String regex) {

    Pattern pattern = Pattern.compile(regex);
    Matcher m = pattern.matcher(content);
    if(!m.find()){
    return null;
    }

    return m.group(1);
    } /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Test test = new Test();
    String urlStr = "http://v.youku.com/v_show/id_XMzI5NTIyNzMy.html";
    try {
    String str= test.getContent(new URL(urlStr));
    String regexp = "<div\\s*class=\"stat stat_area\"\\s*[^>]*>(.+?)</div>";
    String tmp = test.getVideoInf(str, regexp);
    System.out.println(tmp);
    } catch (MalformedURLException e) {
    e.printStackTrace();
    } }
    }
      

  3.   

    谢谢你哦,你这个确实能提取哦,但是能不能找出我的程序为什么就出现问题,如果我把正则表达式改成<title>.*?</title>
    却能提取出<title></title>中的内容
      

  4.   


    使用html解析jar包  jsoupDocument doc = Jsoup.connect("网页地址").get();
                Elements hrefs = doc.select("div[class^=listtitle_b]");
    System.out.println(hrefs.text());