« 使用 JTidy 协助抽取网页内容« »java读取(正则表达式分析)网页内容(2) »
java读取(正则表达式分析)网页内容(1)
package com.xiaofeng.picup;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 
 * 
@author 晓峰2007.1.18 抓取雅虎知识堂的文章标题及内容(测试) 手动输入网址抓取,可进一步自动抓取整个知识堂的全部内容
 * 
 
*/

public class WebContent {
    
/**
     * 读取一个网页全部内容
     
*/

    
public String getOneHtml(String htmlurl) throws IOException{
        URL url;
        String temp;
        StringBuffer sb 
= new StringBuffer();
        
try {
            url 
= new URL(htmlurl);
            BufferedReader in 
= new BufferedReader(new InputStreamReader(url
                    .openStream(), 
"utf-8"));// 读取网页全部内容
            while ((temp = in.readLine()) != null{
                sb.append(temp);
            }

            in.close();
        }
catch(MalformedURLException me){
            System.out.println(
"你输入的URL格式有问题!请仔细输入");
            me.getMessage();
            
throw me;
        }
catch (IOException e) {
            e.printStackTrace();
            
throw e;
        }

        
return sb.toString();
    }


    
/**
     * 
     * 
@param s
     * 
@return 获得网页标题
     
*/

    
public String getTitle(String s) {
        String regex;
        String title 
= "";
        List
<String> list = new ArrayList<String>();
        regex 
= "<title>.*?</title>";
        Pattern pa 
= Pattern.compile(regex, Pattern.CANON_EQ);
        Matcher ma 
= pa.matcher(s);
        
while (ma.find()) {
            list.add(ma.group());
        }

        
for (int i = 0; i < list.size(); i++{
            title 
= title + list.get(i);
        }

        
return outTag(title);
    }


    
/**
     * 
     * 
@param s
     * 
@return 获得链接
     
*/

    
public List<String> getLink(String s) {
        String regex;
        List
<String> list = new ArrayList<String>();
        regex 
= "<a[^>]*href=("([^"]*)"|'([^']*)'|([^\s>]*))[^>]*>(.*?)</a>";
        Pattern pa 
= Pattern.compile(regex, Pattern.DOTALL);
        Matcher ma 
= pa.matcher(s);
        
while (ma.find()) {
            list.add(ma.group());
        }

        
return list;
    }


    
/**
     * 
     * 
@param s
     * 
@return 获得脚本代码
     
*/

    
public List<String> getScript(String s) {
        String regex;
        List
<String> list = new ArrayList<String>();
        regex 
= "<script.*?</script>";
        Pattern pa 
= Pattern.compile(regex, Pattern.DOTALL);
        Matcher ma 
= pa.matcher(s);
        
while (ma.find()) {
            list.add(ma.group());
        }

        
return list;
    }


    
/**
     * 
     * 
@param s
     * 
@return 获得CSS
     
*/

    
public List<String> getCSS(String s) {
        String regex;
        List
<String> list = new ArrayList<String>();
        regex 
= "<style.*?</style>";
        Pattern pa 
= Pattern.compile(regex, Pattern.DOTALL);
        Matcher ma 
= pa.matcher(s);
        
while (ma.find()) {
            list.add(ma.group());
        }

        
return list;
    }


    
/**
     * 
     * 
@param s
     * 
@return 去掉标记
     
*/

    
public String outTag(String s) {
        
return s.replaceAll("<.*?>""");
    }


   
 


Tags: java基础  解析  乱码  java  源码  正则表达式  

原创文章如转载,请注明:转载自:飞扬部落编程仓库 : http://www.busfly.net/csdn/

本文链接地址:http://www.busfly.net/csdn/post/458.html

如果你喜欢本文,请顶一下,支持我,你的支持是我继续发好文章的最大动力。谢谢。
好东西需要分享,快把本文发给你的朋友吧~!~

     
相关文章:




◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
Feed订阅集
网站分类
勤劳致富^.^
最近发表
最新评论及回复
最近留言
随机推荐文章
Powered By Z-Blog   STYLE by busfly . FatMouse
Copyright © 2007 巴士飞扬技术博客. . 沪ICP备07027972号. 会员群1(VS为主):3769186.