如何使用java的正则表达式提取html标签

2024-11-27 18:58:23
推荐回答(3个)
回答1:

//我随便写了一个工具类,getRegexData就是那个方法,你可以根据你的需求稍加改动即可因为我使用的
//URL 而不是HttpClient,所以数据是全部获取过来了,你自己改改吧!不懂再问我
package com.wdy.util;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 工具类
 * @author WDY
 *
 */
public class Tool {
    public static void main(String[] args) {
        System.out.println(getRegexData("        
        
        try {
            URL url=new URL("http://www.baidu.com");
            String stringData=getStringFromInputStream(url.openStream());
            System.out.println(stringData+"----------------------------------------");
            System.out.println();
            
            System.out.println(getRegexData("http://.{6,70}?(png|jpg)", stringData));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 给一个正则表达式,和数据,将正则匹配到的数据全数取出来
     * 
     * @param regex
     * @param data
     * @return List
     */
    public static List getRegexData(String regex,String data){
        Pattern pattern=Pattern.compile(regex);
        Matcher matcher=pattern.matcher(data);
        List resultList=new ArrayList();
        int index=0;//搜索的位置
        String temp="";
        /* 从指定位置查找,如果找到了,就继续执行下面的代码 */
        while(matcher.find(index)){
            temp=matcher.group();//将匹配到的数据取出来放到集合中去
            resultList.add(temp);
            index+=temp.length();//将查找位置放到此时找到的数据后面
            System.out.println(index);
        }
        return resultList;
    }
    /**
     * 将输入流装成字符串
     * @param is
     * @return
     */
    public static String getStringFromInputStream(InputStream is)throws IOException{
        
        StringBuilder sbl=new StringBuilder();
        byte[] buff=new byte[1024*8];
        int len;
        int i=0;
        while((len=is.read(buff))!=-1){
            sbl.append(new String(buff,0,len,"utf-8"));
            System.out.println(i++);
        }
        System.out.println(sbl.length());
        return sbl.toString();
    }
}

回答2:

你的意思是不是用Java访问一个链接,在返回的数据中提取出放在标签中的数据,例如取出这些标签中的数据

回答3:

什么意思?