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

简易版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页面资源提取器 cYY

    总的来说,CYY网页资源提取器是一款强大的工具,它的功能强大且易于操作,能帮助用户快速、有序地获取网络上的页面资源。无论是为了个人学习,还是专业的工作需求,都能从中受益。但使用时一定要注意尊重版权,遵守...

    web网页采集器源码

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

    大华ocx插件,完美嵌入web页面,百分百ie可用,web端完美调用大华摄像头

    3. **Web页面嵌入**:通过使用大华OCX插件,开发者可以将摄像头的视频流直接嵌入到Web页面中,用户无需安装额外的客户端软件,只需在IE浏览器上浏览页面即可查看摄像头画面。这种技术使得远程监控、在线视频会议等...

    Python+SQLite的WEB采集器源码

    【Python+SQLite的WEB采集器源码】是一个利用Python编程语言构建的自动化网络数据采集工具。这个工具的主要功能是定期从指定的网站抓取信息,并将抓取到的数据存储到SQLite数据库中。SQLite是一个轻量级的关系型...

    基于Matlab GUI的简易音频信号采集分析仪

    【基于Matlab GUI的简易音频信号采集分析仪】 在当今的数字信号处理领域,Matlab是一种广泛使用的工具,尤其在音频信号处理方面。本项目利用Matlab的图形用户界面(GUI)技术,开发了一款简易的音频信号采集与分析...

    python web数据采集显示

    在IT行业中,Python是一种广泛应用的编程语言,尤其在Web数据采集和分析方面表现突出。本项目专注于使用Python进行Web数据采集并借助matplotlib库进行数据显示。下面将详细解释这些知识点。 1. **Python Web数据...

    关关采集器v3.3完整最终全版本通用1.7、1.8、2.X,3.X

    3. **数据清洗与转换**:采集到的数据往往需要进一步处理才能用于分析,关关采集器可能提供了数据清洗和格式转换的功能,确保数据质量。 4. **批量任务处理**:对于需要大量抓取的项目,关关采集器可能会支持批量...

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

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

    疯子页面采集器教程

    【疯子页面采集器教程】 疯子页面采集器是一款强大的网页数据抓取工具,它能够帮助用户快速、高效地从互联网上抓取所需信息。在本教程中,我们将深入探讨这款采集器的功能、使用方法以及如何利用它进行网页数据的...

    阿里巴巴国际版采集器

    《阿里巴巴国际版采集器:高效的数据获取与分析工具》 阿里巴巴国际版采集器是一款专为从事跨境电商、市场研究以及数据分析的用户设计的高效工具。它利用先进的多线程技术,能够快速、稳定地抓取阿里巴巴国际网站上...

    网站内容采集器 asp 版

    总之,网站内容采集器 ASP 版是一个强大的工具,能够帮助用户自动化处理网络数据,为数据分析、市场研究、内容管理等领域提供便捷。然而,合理、合法、合规地使用采集器至关重要,以确保信息获取的可持续性和安全性...

    八爪鱼采集器V7.6.4版安装包.zip

    总的来说,八爪鱼采集器V7.6.4版是一款高效且易用的数据采集工具,它让数据采集工作变得简单,无论是个人研究、商业分析还是学术研究,都能从中受益。对于那些不熟悉编程的用户,八爪鱼采集器无疑是一款理想的选择,...

    C# web 图片采集

    提供的"奥硕图片采集器"源码应该包含了完整的图片采集流程,包括URL管理、请求发送、图片链接提取和下载等功能。通过阅读和分析源码,可以深入理解每一步的具体实现,提升自己的编程技能。 最后,要注意合法性和...

    万能asp采集器

    万能ASP采集器的简易版V0.1可能包含了以下功能: 1. **自定义规则**:用户可以设置规则来指定需要抓取的网页元素,例如通过CSS选择器或正则表达式定位目标内容。 2. **多线程采集**:支持同时处理多个网页,提高...

    web信息采集用的技术

    在构建Web信息采集系统的过程中,涉及的技术范围广泛且复杂,主要涵盖了网络爬虫、数据解析、反反爬策略以及存储与分析等多个环节。以下是对这些关键知识点的详细说明: 1. **网络爬虫**:网络爬虫是信息采集的基础...

    Python 毕业设计 - 一键分析你的上网行为和web页面可视化界面.zip

    这个Python毕业设计项目的核心是构建一个能够分析上网行为并提供可视化Web页面的工具。通过使用Python的多种库和模块,我们可以实现数据收集、处理、分析以及结果的展示。以下是该项目涉及的一些关键知识点: 1. **...

    Zxq采集器源码Zxq采集器源码

    综合以上分析,Zxq采集器源码是一个基于ASP.NET的Web应用,具备数据采集、编辑、显示等功能。用户可以学习和利用这些源代码来了解如何在ASP.NET环境中实现网络数据采集,或者根据自己的需求修改和扩展现有的功能。...

Global site tag (gtag.js) - Google Analytics