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

正则表达式获取网页中链接和内容解决办法

2012-05-21 
正则表达式获取网页中链接和内容我想用正则表达式获取网页中链接和内容img srchttp://www.baidu.com/ic

正则表达式获取网页中链接和内容
我想用正则表达式获取网页中 链接 和 内容

<img src="http://www.baidu.com/icon.png" /><a href="http://guide.sina.cn/?pos=1&amp;vt=1">导航</a><a href="http://sina.cn/nc.php?pos=1&amp;vt=1">新闻</a><a href="http://mil.sina.cn/?pos=1&amp;vt=1">军事</a><a href="http://weibo.cn/?gotoreg=1&amp;from=index&amp;s2w=index&amp;wm=ig_0001_index&amp;pos=1&amp;vt=1">微博</a><a href="http://finance.sina.cn/?sa=t60d13v512&amp;pos=1&amp;vt=1">股票</a><br/>


我想得到内容中的href连接和内容 例如

http://guide.sina.cn/?pos=1&amp;vt=1 导航
http://sina.cn/nc.php?pos=1&amp;vt=1 新闻
...
http://finance.sina.cn/?sa=t60d13v512&amp;pos=1&amp;vt= 股票

[解决办法]
第一个方法是 读取数据

Java code
        /**     * 文件中读取 目标文件     * @return     * @author wangjikuan     */    private static StringBuffer getSb(){        StringBuffer sb = new StringBuffer();        File f = new File("c:/xx.txt");        try {            BufferedReader reader = new BufferedReader( new InputStreamReader(new FileInputStream(f), "gbk"));            String s = "";            while((s = reader.readLine()) != null){                sb.append(s);            }                    } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return sb;    }        /**     * 解析 字符串,得到目标     * @param sb     * @author wangjikuan     */    private static void parse(StringBuffer sb){        String regx = "<a.*?</a>";        Pattern p = Pattern.compile(regx);        Matcher m = p.matcher(sb.toString());                String regx1 = "(?<=href=\").*(?=\")";        Pattern p1 = Pattern.compile(regx1);            String regx2 = "(?<=>).*(?=<)";        Pattern p2 = Pattern.compile(regx2);                        while(m.find()){            String child = m.group();            Matcher m1 = p1.matcher(child);                        if(m1.find()){                System.out.print(m1.group());            }                        Matcher m2 = p2.matcher(child);                        if(m2.find()){                System.out.println(m2.group());            }                    }            }        public static void main(String[] args) {        parse(getSb());    }
[解决办法]
Java code
    public static void main(String args[]) {        String str = "<img src=\"http://www.baidu.com/icon.png\" /><a href=\"http://guide.sina.cn/?pos=1&amp;vt=1\">导航</a><a href=\"http://sina.cn/nc.php?pos=1&amp;vt=1\">新闻</a><a href=\"http://mil.sina.cn/?pos=1&amp;vt=1\">军事</a><a href=\"http://weibo.cn/?gotoreg=1&amp;from=index&amp;s2w=index&amp;wm=ig_0001_index&amp;pos=1&amp;vt=1\">微博</a><a href=\"http://finance.sina.cn/?sa=t60d13v512&amp;pos=1&amp;vt=1\">股票</a><br/>";        String regex = "href=\"(.*?)\">(.*?)<";        Pattern p = Pattern.compile(regex);        Matcher m = p.matcher(str);        while (m.find()) {            System.out.println(m.group(1));            System.out.println(m.group(2));            System.out.println("-------------");        }    }    private static String converse(String str, int pos) {        String result = "";        for (int i = 0; i < str.length(); i++) {            int index = pos;            if (i > pos)                index = str.length() - i + pos;            else if (i < pos)                index = pos - i - 1;            result += str.charAt(index);        }        return result;    } 


[解决办法]

探讨
Java code


public static void main(String args[]) {
String str = "<img src=\"http://www.baidu.com/icon.png\" /><a href=\"http://guide.sina.cn/?pos=1&amp;amp;vt=1\">导航</a><a href=\"htt……

热点排行