/*获取网址首页的所有网址和链接文字*/


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;



import java.net.*;
import java.io.*;
import java.util.regex.*;

/*
根据指定的规则,通过构造正则表达式获取网址
*/

public class Urls
...{
    private String startUrl;                                         //开始采集网址
    String  urlContent;
    String ContentArea;
    private String strAreaBegin ,strAreaEnd ;            //采集区域开始采集字符串和结束采集字符串
    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.zuzwn.com/");
         myurl.getUrlContent();
         myurl.getContentArea();
         myurl.getStartUrl("http://www.zuzwn.com/");
         myurl.getStringNotInUrl("google");
         myurl.Urls();
         
        //System.out.println("startUrl:"+myurl.startUrl);
        //System.out.println("urlcontent:"+myurl.urlContent);
        //System.out.println("ContentArea:"+myurl.ContentArea);
 
    }
    
    
    //初始化构造函数 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>]$";
        String regex ="<a.*?/a>";
         //String regex ="http://.*?>";
        Pattern pt=Pattern.compile(regex);
        Matcher mt=pt.matcher(ContentArea);
        while(mt.find())
         ...{
                 System.out.println(mt.group());
                 i++;
                 
                 //获取标题
                 Matcher title=Pattern.compile(">.*?</a>").matcher(mt.group()); 
                 while(title.find())
                 ...{
                      System.out.println("标题:"+title.group().replaceAll(">|</a>",""));
                 }
                 
                 //获取网址
                 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;
    }
}

转载于:https://www.cnblogs.com/zuzwn/p/3614978.html

Java正则表达式获取网页所有网址和链接文字相关推荐

  1. c#正则表达式取出数据库中带html标签的内容,C#用正则表达式 获取网页源代码标签的属性或值...

    1.有url获取到网页源代码: using System.Web; using System.IO; using System.Net; private void GetHtmlinfo(string ...

  2. 如何批量获取网页中的下载链接

    tips:下载 chrome json 正则表达式 如何批量获取网页中的下载链接 前言 打开你要下载的网页 二.获取网页的json数据 1.获取网页的源码 2.选取json 3.获取json字符串 4 ...

  3. 获取网页上没有下载链接的视频音频资源 火狐浏览器插件 Video DownloadHelper

    获取网页上没有下载链接的视频音频资源 荔枝上web的音频下载链接没有了,"查看源代码",没有找到蛛丝马迹,它的数据没有以资源的形式放到前台代码中,于是查看浏览器缓存,希望从中发现点 ...

  4. Java爬虫获取网页表格数据

    //Java爬虫获取网页表格数据 public class Pachong implements Runnable { public void run() { String Rpt_date = nu ...

  5. Java爬虫获取网页视频,音乐,图片等

    如何使用Java写爬虫来获取网页视频 方法1对于没有反爬虫机制(不多说直接上代码) @SuppressWarnings("all") public String getVideo( ...

  6. java正则表达式获取指定两个字符串之间内容

    xml解析利用正则表达式获取指定两个字符串之间内容 在遇到解析复杂xml的时候,想到大家所想到的都是利用dom4j作为首发工具,但是当遇到层次很多,较为复杂,我们难道还需要从根节点一层一层的解析下去吗 ...

  7. java正则 链接_Java正则表达式获取网址和链接文字解析

    很久不写正则表达式了,网上看到个面试题关于提取, 各种乱七八糟的解法. 正确的,应该是这样吧: import java.util.regex.Matcher; import java.util.reg ...

  8. java 获取图片的路径_Java中使用正则表达式获取网页中所有图片的路径

    /** * 从HTML源码中提取图片路径,最后以一个 String 类型的 List 返回,如果不包含任何图片,则返回一个 size=0 的List * 需要注意的是,此方法只会提取以下格式的图片:. ...

  9. java如何获取网页全部内容

    URL获取 之前在项目中,遇到这样一个问题.需要读取一个网页的内容,却发现只读取到了网页内容的一部分. 下面是代码: public static void read1(String urlStr) { ...

最新文章

  1. jsp连接mysql数据库 例子_jsp连接mysql数据库的例子
  2. listview 滑动以后设置最上面一行为整行展示
  3. 3. 软件测试的类型
  4. 无偏方差为什么除以n-1
  5. 发送带有接缝的活动邀请
  6. Oracle用 odp.net 时出现 Oracle.DataAccess.Client.OracleConnection的类型初始值设定项引发异常 问题的解决...
  7. LeetCode 513. 找树左下角的值 思考分析
  8. 各行业大数据可视化界面参考
  9. leetcode436. 寻找右区间(二分法)
  10. 在php 添加时间,在PHP中添加时间
  11. HDFS-HA-federation的机制和功能组件
  12. 面试官通过21天步数考察候选人诚意,结果拒了清华生收了三本生
  13. mysql外键约束_mysql 外键约束
  14. 共享没有计算机网络连接不上去,苹果usb共享给电脑连接不上怎么办
  15. proteus仿真+keil——>制作流水灯
  16. 技术领导力 程序员如何才能带团队 文摘 (三)
  17. Matrix67的情书 题解 恺撒移位密码
  18. 计算机平时测试零分,计算机二级最全攻略 就快考试了不看等什么呢!
  19. php框架tp6自学笔记——pdf文件下载
  20. SpringBoot整合MybatisPlus实战动态SQL,java分布式架构

热门文章

  1. 记录一次解决httpcline请求https报handshake_failure错误
  2. MQ消息队列之MSMQ
  3. elasticsearch 5.1 问题 ubuntu
  4. gtk+学习笔记(五)
  5. Oracle基础中的基础视频讲座录像(西安)供免费下载
  6. gitlab4安装mysql出问题解决方法
  7. Express框架开发知识点总结
  8. opencv-原图基础上添加指定颜色
  9. 输出日志实例改成用Spring的AOP来实现
  10. 《DOS命令全集(中英文对照)》CHM版.CHM