Java正则表达式读取网页内容程序代码

 

 代码如下 复制代码

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;

/** *//**
*
* @抓取雅虎知识堂的文章标题及内容(测试) 手动输入网址抓取,可进一步自动抓取整个知识堂的全部内容
*
*/
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("<.*?>", "");
    }

时间: 2024-09-19 23:37:48

Java正则表达式读取网页内容程序代码的相关文章

java DOM4J 读取XML实例代码_java

下面展示一篇我自己写的一个XML读取测试 复制代码 代码如下: import java.util.Iterator;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import org.dom4j.*;import org.dom4j.io.SAXRe

java 抓取网页内容实现代码_java

复制代码 代码如下: package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.Authenticator; import java.net.HttpURLConnection; import java.net.PasswordAuthentication

java正则表达式应用的实例代码_java

String str = "n1e你v00a?Az$Z000?#99?9900眯2_悄s3你y4@好?!6求救你d75a8t"; Pattern p= Pattern.compile("[\u4e00-\u9fa5]");//把汉字截取出来. Matcher m= p.matcher(str); while(m.find()){ System.out.print(m.group()); } String str = "n1e你v00a?Az$Z000?#9

Java用正则表达式如何读取网页内容_正则表达式

学习java的正则表达式,抓取网页并解析HTML部分内容   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 jav

分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要)

原文:分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要)   Java InputStream读取数据问题 ====================================================================== 原理讲解  1. 关于InputStream.read()      在从数据流里读取数据时,为图简单,经常用InputStream.read()方法.这个方法是从流里每

代码-用java语言编写android程序,实现调用usb打印机图片功能

问题描述 用java语言编写android程序,实现调用usb打印机图片功能 用java语言编写android程序,实现调用usb打印机图片功能,打印机不能联网,只是用代码去调用usb接口的打印机.急需实现此功能,请大神们帮帮忙 解决方案 http://blog.csdn.net/kangear/article/details/18141741 解决方案二: http://www.360doc.com/content/13/0906/12/11482448_312596809.shtml

java 数据结构- 分离链接散列表,线性探测,平方探测 java 程序代码

问题描述 分离链接散列表,线性探测,平方探测 java 程序代码 给定输入{4371,1323,6173,4199,4344,9679,1989}和散列函数h(x)=x mod 10 分离链接散列表,线性探测,平方探测 java 程序的代码

java遍历服务器里的所有excel文件读取特定单元格的值,循环读取文件的代码怎么写

问题描述 java遍历服务器里的所有excel文件读取特定单元格的值,循环读取文件的代码怎么写 package com.excel.action; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cell; import jxl.CellType; import jxl.LabelCell; import jxl.Sheet; import jxl.Workbo

关于Java的runtime的以下代码,如何让notepad保持开着的状态而结束java程序。

问题描述 关于Java的runtime的以下代码,如何让notepad保持开着的状态而结束java程序. import java.awt.AWTException; import java.awt.Robot; import java.awt.event.KeyEvent; import java.io.IOException; public class Robot05 { // Create an array of keycode data static int keyInput[] = {