Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 383|回复: 0

[网络编程学习]java获取网页所有网址和链接文字

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-7 00:04:43 | 显示全部楼层 |阅读模式
    / 通过指定URL,获取网页上所有的“链接URL”和“链接文字”。
        package catch_url;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
        public class Urls {
      private String startUrl; // 开始采集网址
         String urlContent;
         String ContentArea;
         private String strAreaBegin, strAreaEnd; // 采集区域开始采集字符串和结束采集字符串
         @SuppressWarnings("unused")
      private String stringInUrl, stringNotInUrl;
         String strContent;// 获得的采集内容
         String[] allUrls; // 采集到的所有网址
         private String regex; // 采集规则
         UrlAndTitle urlAndTitle = new UrlAndTitle(); // 存储网址和标题
         public static void main(String[] args)
      {
       Urls myurl = new Urls("<body", "/body>");
       myurl.getStartUrl("http://www.126.com/");
       myurl.getUrlContent();
       myurl.getContentArea();
       myurl.getStringInUrl("http://www.126.com/");
       myurl.getStringNotInUrl("Google");
       myurl.Urls();
         }
         // 初始化构造函数 strAreaBegin 和strAreaEnd
         public Urls(String strAreaBegin, String strAreaEnd) {
       this.strAreaBegin = strAreaBegin;
       this.strAreaEnd = strAreaEnd;
      }
         //
      public void Urls()
      {
       int i = 0;
       // String regex ="<a
       // href="?"?http://[a-zA-Z0-9]+.[a-zA-Z0-9]+.[a-zA-Z]+/?[.?[S|s]]+[a>]$";
       final String regex = "<a.*?/a>";
       // String regex ="http://.*?>";
       final Pattern pt = Pattern.compile(regex);
       final Matcher mt = pt.matcher(ContentArea);
       while (mt.find()) {
        System.out.println(mt.group());
        i++;
           // 获取标题
        final Matcher title = Pattern.compile(">.*?</a>").matcher(mt.group());
        while (title.find()) {
         System.out.println("标题:"
           + title.group().replaceAll(">|</a>", ""));
        }
           // 获取网址
        final Matcher myurl = Pattern.compile("href=.*?>").matcher(mt.group());
        while (myurl.find()) {
         System.out.println("网址:"
           + myurl.group().replaceAll("href=|>", ""));
        }
           System.out.println();
          }
          System.out.println("共有" + i + "个符合结果");
         }
         // 获得开始采集网址
      public void getStartUrl(String startUrl)
      {
       this.startUrl = startUrl;
      }
         // 获得网址所在内容;
      public void getUrlContent()
      {
          StringBuffer is = new StringBuffer();
       try {
        URL myUrl = new URL(startUrl);
        BufferedReader br = new BufferedReader(new InputStreamReader(myUrl
          .openStream()));
           String s;
        while ((s = br.readLine()) != null) {
         is.append(s);
        }
        urlContent = is.toString();
       } catch (Exception e)
          {
        System.out.println("网址文件未能输出");
        e.printStackTrace();
       }
         }
         // 获得网址所在的匹配区域部分
      public void getContentArea()
      {
       int pos1 = 0, pos2 = 0;
       pos1 = urlContent.indexOf(strAreaBegin) + strAreaBegin.length();
       pos2 = urlContent.indexOf(strAreaEnd, pos1);
       ContentArea = urlContent.substring(pos1, pos2);
      }
         // 以下两个函数获得网址应该要包含的关键字及不能包含的关键字
      // 这里只做初步的实验。后期,保护的关键字及不能包含的关键字应该是不只一个的。
      public void getStringInUrl(String stringInUrl)
      {
       this.stringInUrl = stringInUrl;
         }
         public void getStringNotInUrl(String stringNotInUrl)
      {
       this.stringNotInUrl = stringNotInUrl;
      }
         // 获取采集规则
         // 获取url网址
      public void getUrl()
      {
         }
         public String getRegex()
      {
       return regex;
         }
         class UrlAndTitle {
       String myURL;
          String title;
      }
    }
      
       

       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/11/7/000443171.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 10:48 , Processed in 0.300993 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表