简易版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基础蜘蛛网页文章采集器,英文名称Fast_Spider,属于蜘蛛爬虫类程序,用于从指定网站采集海量精华文章,将直接丢弃其中的垃圾网页信息,仅保存具备阅读价值和浏览价值的精华文章,自动执行HTM-TXT转换。本软件为绿色软件解压即可使用。 web基础蜘蛛网页文章采集器特点如下: (1)本软件采用北大天网MD5指纹排重算法,对于相似相同的网页信息,不再重复保存。 (2)采集信息含义:[[HT]]表示网页标题,[[HA]]表示文章标题,[[HC]]表示10个权重关键字,[[UR]]表示网页中的图片链接,[[TXT]]之后为正文。 (3)蜘蛛性能:本软件开启300个线程来保证采集效率。通过采集100万精华文章来执行压力测试,以普通网民的联网计算机为参考标准,单台计算机可以在一天内遍历200万网页、采集20万精华文章,100万精华文章仅需5天就可采集完毕。 (4) 正式版与免费版的区别在于:正式版允许将采集的精华文章数据自动保存为ACCESS数据库。 web基础蜘蛛网页文章采集器操作步骤 (1)使用前,必须确保你的计算机可以连通网络,且防火墙不要拦截本软件。 (2)运行SETUP.EXE和setup2.exe,以安装操作系统system32支持库。 (3)运行spider.exe,输入网址入口,先点"人工添加"按钮,再点"启动"按钮,将开始执行采集。 web基础蜘蛛网页文章采集器使用注意 (1)抓取深度:填写0表示不限制抓取深度;填写3表示抓到第3层。 (2)通用蜘蛛模式与分类蜘蛛模式的区别:假定网址入口为“http://youxi.baidu.com/”,若选择通用蜘蛛模式,将遍历“baidu.com”里面的每一个网页;若选择分类蜘蛛模式,则只遍历“youxi.baidu.com”里面的每一个网页。 (3) 按钮“从MDB导入”:网址入口从TASK.MDB中批量导入。 (4)本软件采集的原则是不越站,例如给的入口是“http://youxi.baidu.com/”,就只在百度站点内部抓取。 (5)本软件采集过程中,偶尔会弹出一个或数个“错误对话框”,请不予理会,倘若关闭“错误对话框”,采集软件就会挂掉。 (6)使用者如何选择采集题材:例如你若想采集 “股票类”文章,只需把那些“股票类”站点作为网址入口即可。
python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值