`
likenice
  • 浏览: 61016 次
  • 来自: 北京
社区版块
存档分类
最新评论

简易版web页面分析采集器

阅读更多
  1. import java.io.BufferedReader;   
  2. import java.io.IOException;   
  3. import java.io.InputStreamReader;   
  4. import java.net.MalformedURLException;   
  5. import java.net.URL;   
  6. import java.util.ArrayList;   
  7. import java.util.HashMap;   
  8. import java.util.List;   
  9. import java.util.regex.Matcher;   
  10. import java.util.regex.Pattern;   
  11.   
  12.   
  13. public class WebContent   
  14. {   
  15.  /**  
  16.   * 读取一个网页全部内容  
  17.   */  
  18.  public String getOneHtml(final String htmlurl) throws IOException   
  19.  {   
  20.   URL url;   
  21.   String temp;   
  22.   final StringBuffer sb = new StringBuffer();   
  23.   try  
  24.   {   
  25.    url = new URL(htmlurl);   
  26.    final BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "utf-8"));// 读取网页全部内容   
  27.    while ((temp = in.readLine()) != null)   
  28.    {   
  29.     sb.append(temp);   
  30.    }   
  31.    in.close();   
  32.   }   
  33.   catch (final MalformedURLException me)   
  34.   {   
  35.    System.out.println("你输入的URL格式有问题!请仔细输入");   
  36.    me.getMessage();   
  37.    throw me;   
  38.   }   
  39.   catch (final IOException e)   
  40.   {   
  41.    e.printStackTrace();   
  42.    throw e;   
  43.   }   
  44.   return sb.toString();   
  45.  }   
  46.   
  47.  /**  
  48.   *   
  49.   * @param s  
  50.   * @return 获得网页标题  
  51.   */  
  52.  public String getTitle(final String s)   
  53.  {   
  54.   String regex;   
  55.   String title = "";   
  56.   final List<String> list = new ArrayList<String>();   
  57.   regex = "<title>.*?</title>";   
  58.   final Pattern pa = Pattern.compile(regex, Pattern.CANON_EQ);   
  59.   final Matcher ma = pa.matcher(s);   
  60.   while (ma.find())   
  61.   {   
  62.    list.add(ma.group());   
  63.   }   
  64.   for (int i = 0; i < list.size(); i++)   
  65.   {   
  66.    title = title + list.get(i);   
  67.   }   
  68.   return outTag(title);   
  69.  }   
  70.   
  71.  /**  
  72.   *   
  73.   * @param s  
  74.   * @return 获得链接  
  75.   */  
  76.  public List<String> getLink(final String s)   
  77.  {   
  78.   String regex;   
  79.   final List<String> list = new ArrayList<String>();   
  80.   regex = "<a[^>]*href=(\"([^\"]*)\"|\'([^\']*)\'|([^\\s>]*))[^>]*>(.*?)</a>";   
  81.   final Pattern pa = Pattern.compile(regex, Pattern.DOTALL);   
  82.   final Matcher ma = pa.matcher(s);   
  83.   while (ma.find())   
  84.   {   
  85.    list.add(ma.group());   
  86.   }   
  87.   return list;   
  88.  }   
  89.   
  90.  /**  
  91.   *   
  92.   * @param s  
  93.   * @return 获得脚本代码  
  94.   */  
  95.  public List<String> getScript(final String s)   
  96.  {   
  97.   String regex;   
  98.   final List<String> list = new ArrayList<String>();   
  99.   regex = "<script.*?</script>";   
  100.   final Pattern pa = Pattern.compile(regex, Pattern.DOTALL);   
  101.   final Matcher ma = pa.matcher(s);   
  102.   while (ma.find())   
  103.   {   
  104.    list.add(ma.group());   
  105.   }   
  106.   return list;   
  107.  }   
  108.   
  109.  /**  
  110.   *   
  111.   * @param s  
  112.   * @return 获得CSS  
  113.   */  
  114.  public List<String> getCSS(final String s)   
  115.  {   
  116.   String regex;   
  117.   final List<String> list = new ArrayList<String>();   
  118.   regex = "<style.*?</style>";   
  119.   final Pattern pa = Pattern.compile(regex, Pattern.DOTALL);   
  120.   final Matcher ma = pa.matcher(s);   
  121.   while (ma.find())   
  122.   {   
  123.    list.add(ma.group());   
  124.   }   
  125.   return list;   
  126.  }   
  127.   
  128.  /**  
  129.   *   
  130.   * @param s  
  131.   * @return 去掉标记  
  132.   */  
  133.  public String outTag(final String s)   
  134.  {   
  135.   return s.replaceAll("<.*?>""");   
  136.  }   
  137.   
  138.  /**  
  139.   *   
  140.   * @param s  
  141.   * @return 获取雅虎知识堂文章标题及内容  
  142.   */  
  143.  public HashMap<String, String> getFromYahoo(final String s)   
  144.  {   
  145.   final HashMap<String, String> hm = new HashMap<String, String>();   
  146.   final StringBuffer sb = new StringBuffer();   
  147.   String html = "";   
  148.   System.out.println("\n------------------开始读取网页(" + s + ")--------------------");   
  149.   try  
  150.   {   
  151.    html = getOneHtml(s);   
  152.   }   
  153.   catch (final Exception e)   
  154.   {   
  155.    e.getMessage();   
  156.   }   
  157.   // System.out.println(html);   
  158.   System.out.println("------------------读取网页(" + s + ")结束--------------------\n");   
  159.   System.out.println("------------------分析(" + s + ")结果如下--------------------\n");   
  160.   String title = outTag(getTitle(html));   
  161.   title = title.replaceAll("_雅虎知识堂""");   
  162.   // Pattern pa=Pattern.compile("<div   
  163.   // class=\"original\">(.*?)((\r\n)*)(.*?)((\r\n)*)(.*?)</div>",Pattern.DOTALL);   
  164.   final Pattern pa = Pattern.compile("<div class=\"original\">(.*?)</p></div>", Pattern.DOTALL);   
  165.   final Matcher ma = pa.matcher(html);   
  166.   while (ma.find())   
  167.   {   
  168.    sb.append(ma.group());   
  169.   }   
  170.   String temp = sb.toString();   
  171.   temp = temp.replaceAll("(<br>)+?""\n");// 转化换行   
  172.   temp = temp.replaceAll("<p><em>.*?</em></p>""");// 去图片注释   
  173.   hm.put("title", title);   
  174.   hm.put("original", outTag(temp));   
  175.   return hm;   
  176.   
  177.  }   
  178.   
  179.  /**  
  180.   *   
  181.   * @param args  
  182.   *            测试一组网页,针对雅虎知识堂  
  183.   */  
  184.  public static void main(final String args[])   
  185.  {   
  186.   String url = "";   
  187.   final List<String> list = new ArrayList<String>();   
  188.   System.out.print("输入URL,一行一个,输入结束后输入 go 程序开始运行:   \n");   
  189.   /*  
  190.    * http://ks.cn.yahoo.com/question/1307121201133.html  
  191.    * http://ks.cn.yahoo.com/question/1307121101907.html  
  192.    * http://ks.cn.yahoo.com/question/1307121101907_2.html  
  193.    * http://ks.cn.yahoo.com/question/1307121101907_3.html  
  194.    * http://ks.cn.yahoo.com/question/1307121101907_4.html  
  195.    * http://ks.cn.yahoo.com/question/1307121101907_5.html  
  196.    * http://ks.cn.yahoo.com/question/1307121101907_6.html  
  197.    * http://ks.cn.yahoo.com/question/1307121101907_7.html  
  198.    * http://ks.cn.yahoo.com/question/1307121101907_8.html  
  199.    */  
  200.   final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
  201.   try  
  202.   {   
  203.    while (!(url = br.readLine()).equals("go"))   
  204.    {   
  205.     list.add(url);   
  206.    }   
  207.   }   
  208.   catch (final Exception e)   
  209.   {   
  210.    e.getMessage();   
  211.   }   
  212.   final WebContent wc = new WebContent();   
  213.   HashMap<String, String> hm = new HashMap<String, String>();   
  214.   for (int i = 0; i < list.size(); i++)   
  215.   {   
  216.    hm = wc.getFromYahoo(list.get(i));   
  217.    System.out.println("标题: " + hm.get("title"));   
  218.    System.out.println("内容: \n" + hm.get("original"));   
  219.   }   
  220.   /*  
  221.    * String htmlurl[] = {  
  222.    * "http://ks.cn.yahoo.com/question/1307121201133.html",  
  223.    * "http://ks.cn.yahoo.com/question/1307121101907.html",  
  224.    * "http://ks.cn.yahoo.com/question/1307121101907_2.html",  
  225.    * "http://ks.cn.yahoo.com/question/1307121101907_3.html",  
  226.    * "http://ks.cn.yahoo.com/question/1307121101907_4.html",  
  227.    * "http://ks.cn.yahoo.com/question/1307121101907_5.html",  
  228.    * "http://ks.cn.yahoo.com/question/1307121101907_6.html",  
  229.    * "http://ks.cn.yahoo.com/question/1307121101907_7.html",  
  230.    * "http://ks.cn.yahoo.com/question/1307121101907_8.html" }; WebContent  
  231.    * wc = new WebContent(); HashMap<String, String> hm = new HashMap<String,  
  232.    * String>(); for (int i = 0; i < htmlurl.length; i++) { hm =  
  233.    * wc.getFromYahoo(htmlurl[i]); System.out.println("标题: " +  
  234.    * hm.get("title")); System.out.println("内容: \n" + hm.get("original")); }  
  235.    */  
  236.   /*  
  237.    * String html=""; String link=""; String sscript=""; String content="";  
  238.    * System.out.println(htmlurl+" 开始读取网页内容:");  
  239.    * html=wc.getOneHtml(htmlurl); System.out.println(htmlurl+"  
  240.    * 读取完毕开始分析……"); html=html.replaceAll("(<script.*?)((\r\n)*)(.*?)((\r\n)*)(.*?)(</script>)","  
  241.    * ");//去除脚本 html=html.replaceAll("(<style.*?)((\r\n)*)(.*?)((\r\n)*)(.*?)(</style>)","  
  242.    * ");//去掉CSS html=html.replaceAll("<title>.*?</title>"," ");//除去页面标题  
  243.    * html=html.replaceAll("<a[^>]*href=(\"([^\"]*)\"|\'([^\']*)\'|([^\\s>]*))[^>]*>(.*?)</a>","  
  244.    * ");//去掉链接 html=html.replaceAll("(\\s){2,}?"," ");//除去多余空格  
  245.    * html=wc.outTag(html);//多余标记 System.out.println(html);  
  246.    */  
  247.   
  248.   /*  
  249.    * String s[]=html.split(" +"); for(int i=0;i<s.length;i++){  
  250.    * content=(content.length()>s[i].length())?content:s[i]; }  
  251.    * System.out.println(content);  
  252.    */  
  253.   
  254.   // System.out.println(htmlurl+"网页内容结束");   
  255.   /*  
  256.    * System.out.println(htmlurl+"网页脚本开始:"); List  
  257.    * script=wc.getScript(html); for(int i=0;i<script.size();i++){  
  258.    * System.out.println(script.get(i)); }  
  259.    * System.out.println(htmlurl+"网页脚本结束:");  
  260.    *   
  261.    * System.out.println(htmlurl+"CSS开始:"); List css=wc.getCSS(html);  
  262.    * for(int i=0;i<css.size();i++){ System.out.println(css.get(i)); }  
  263.    * System.out.println(htmlurl+"CSS结束:");  
  264.    *   
  265.    * System.out.println(htmlurl+"全部链接内容开始:"); List list=wc.getLink(html);  
  266.    * for(int i=0;i<list.size();i++){ link=list.get(i).toString(); }  
  267.    * System.out.println(htmlurl+"全部链接内容结束:");  
  268.    *   
  269.    * System.out.println("内容"); System.out.println(wc.outTag(html));  
  270.    */  
  271.  }   
  272. }  
分享到:
评论

相关推荐

    web基础蜘蛛网页文章采集器 v3.2.zip

    web基础蜘蛛网页文章采集器,英文名称Fast_Spider,属于蜘蛛爬虫类程序,用于从指定网站采集海量精华文章,将直接丢弃其中的垃圾网页信息,仅保存具备阅读价值和浏览价值的精华文章,自动执行HTM-TXT转换。...

    土壤重金属分析采样器 土壤重金属分析采样器

    土壤重金属分析采样器 土壤重金属分析采样器

    web网页采集器源码

    采集器源码 运行源码,CollItem.aspx 进入 一、添加采集项目,设置以后保存。 二、添加好采集项目后,进行 列表设置: 列表页面地址 列表开始标记 列表结束标记 三、采集测试 数据库在App_Data文件夹中...

    web服务器上的采集器:蓝天采集器 网站采集小能手

    一款运行在web服务器上的采集器:蓝天采集器部署在web服务器上的采集器 相比市面上的火车头等桌面端采集器,可以大大降低上手成本,而且更加简便,最重要的是完全开源 明天给大家出一个写采集规则的教程(目前b站...

    疯子页面采集器源码

    疯子页面采集器是一款网页抓取工具,是用于网站信息采集,网站信息抓取,包括图片、文字等信息采集处理发布,是目前使用人数最多的互联网数据采集程序,可以采集大部分未加密页面站点 采集器教程 ...

    关关采集器最新稳定版

    关关采集器V5.5稳定版 20120901 1、采集和生成速度更快更稳定! 2、支持乱序采集模式 3、替换采集模式+图片行间水印+图片FTP负载+文字图片化等等 4、支持图片采集(6.0版本采集图片无法入库) 5、...

    简易水位报警器-简易水位采集器操作规范书

    简易水位报警器-简易水位采集器操作规范书

    疯子页面采集器教程

    疯子页面采集器教程

    Python+SQLite的WEB采集器源码

    Python开发的定时网站采集器,采用正则捕获,内容存放在SQLite数据库中

    水淼万能文章采集器V2.18.3.0(破解版)

    水淼万能文章采集器V2.18.3.0(破解版),站长必备的采集工具。

    功能十分强大的采集器免费破解版

    自动回贴采集,登录采集,购买附件采集,站群管理,词表管理,SEO分析,站长查询,内置采集规则,智能识别网站,免写采集规则,可视化采集规则编辑论坛/CMS/博客采集器,抢沙发,群发帖子,群发短消息,邮件群发等众多推广功能...

    简易频谱分析仪

    采用外差原理设计并实现频谱分析仪:利用DDS芯片生成10KHz步进的本机振荡器,AD835做集成混频器,通过开关电容滤波器取出各个频点(相隔10KHz)的值,再配合放大,检波电路收集采样值,经凌阳单片机SPCE061A处理,...

    网站内容采集器 asp 版

    网站采集器网站采集器网站采集器网站采集器网站采集器

    丛林采集器v1.0丛林采集器v1.0

    丛林采集器丛林采集器丛林采集器丛林采集器丛林采集器丛林采集器

    亚普伪原创采集器 v3测试版本.zip

    亚普伪原创采集器是国内第一款完美把原创与采集紧密结合的采集器,在功能和性能上完全超越了同类产品,并创造性用WEB界面作为采集器软件界面,用户可以手工编辑界面任何地方,傻瓜的操作方式,打造新一代采集器。...

    环讯网络采集器(Ajax版)v2.0 (支持无刷新页面,Ajax内容浏览)

    可N级页面关联采集,自动整合成一条完整记录。支持网页框架,链接和网页加密等。支持完整采集和增量采集(断点续采)。可自动下载二进制文件,比如图片,软件,mp3等。可采集本地磁盘信息。支持Post数据请求采集方式。 ...

    网站万能信息采集器 v10.0

    如果一条信息分布在很多不同的页面上,网站万能信息采集器也能自动识别N级页面实现信息采集抓取。软件自带了一个8层网站采集例子 3.任意类型的文件都能下载 如果需要采集图片、Flash、视频等二进制文件,网站万能...

Global site tag (gtag.js) - Google Analytics