`

Java获取网页所有网址和链接文字(正则表达式)

    博客分类:
  • java
阅读更多
 // 通过指定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;
 }
}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java正则表达式提取html中的信息

    java实现用正则表达式的方法提取html中的信息,可以提取标题,正文,链接等。经过运行,没问题的

    正则表达式

    这个特殊的RegExp对象和所有以字母"s"结尾的字符串都匹配.用RegExp()也可以定义 一个等价的正则表达式,代码如下: var pattern = new RegExp("s$"); 无论是用正则表达式直接量还是用构造函数RegExp(),创建一个...

    java范例开发大全源代码

     实例105 使用正则表达式验证电话号码的格式 141  6.2 字符串缓存类StringBuffer 143  实例106 创建字符串缓存类 143  实例107 提取单个字符 144  实例108 给指定字符赋值 145  实例109 插入新的...

    垃圾分类小程序端使用SpringBoot+uniapp技术.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    Java范例开发大全 (源程序)

     实例105 使用正则表达式验证电话号码的格式 141  6.2 字符串缓存类StringBuffer 143  实例106 创建字符串缓存类 143  实例107 提取单个字符 144  实例108 给指定字符赋值 145  实例109 插入新的字符 146...

    java范例开发大全

    实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类StringBuffer 143 实例106 创建字符串缓存类 143 实例107 提取单个字符 144 实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 插入新的...

    Wechat-Public-Tool:一款模拟微信公众号登录并发消息给粉丝用户的软件,包括文字和图片

    4.微信的返回的页面其实很多里面是有提示的,比如用哪些正则表达式来获取想要的数据。 5.网上的模拟网页公众号没有实现发送图片和附件,这个实现了图片,附件原理是一样的,都是在上传文件的时候请求上传链接, 然后...

    java范例开发大全(pdf&源码)

    实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类StringBuffer 143 实例106 创建字符串缓存类 143 实例107 提取单个字符 144 实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 插入新的...

    Java范例开发大全(全书源程序)

    实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类StringBuffer 143 实例106 创建字符串缓存类 143 实例107 提取单个字符 144 实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 ...

    SubEthaEdit-5.1.3.zip 可以写文章,代码,笔记

    强大的荧光笔基于状态,正则表达式和纯文本字符串。模式可以相互引用,因此HTML模式具有全功能的CSS和javascript部分。 语法样式 这些模式引用样式的语义层次结构,可以对其进行自定义以匹配您的首选项。 自动...

    IBM WebSphere Portal门户开发笔记01

    58、JS正则表达式去除空格类方法 335 59、JS重写CONFIRM把确定修改为是与否 335 60、JS执行EXE可执行文件 336 61、JS读取注册表且执行EXE文件 336 62、JS与VBSCRIPT的结合使用 337 63、IE与火狐获取标签的文本内容...

    Google Android SDK开发范例大全(第3版) 1/5

    5.1 具有正则表达式的TextView 5.2 ACTION!CALL!拨打电话 5.3 自制发送短信程序 5.4 自制发送E-mail程序 5.5 自制日历手机数据库 5.6 手机振动的节奏 5.7 图文可视化提醒 5.8 状态栏的图标与文字提醒 5.9 搜索手机...

    Google Android SDK开发范例大全(第3版) 4/5

    5.1 具有正则表达式的TextView 5.2 ACTION!CALL!拨打电话 5.3 自制发送短信程序 5.4 自制发送E-mail程序 5.5 自制日历手机数据库 5.6 手机振动的节奏 5.7 图文可视化提醒 5.8 状态栏的图标与文字提醒 5.9 搜索手机...

    Google Android SDK开发范例大全(第3版) 3/5

    5.1 具有正则表达式的TextView 5.2 ACTION!CALL!拨打电话 5.3 自制发送短信程序 5.4 自制发送E-mail程序 5.5 自制日历手机数据库 5.6 手机振动的节奏 5.7 图文可视化提醒 5.8 状态栏的图标与文字提醒 5.9 搜索手机...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出一个象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅...

    MySQL 5.1参考手册

    7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用工具概述 8.2. myisampack:生成压缩...

    xheditor-1.1.14

    localUrlTest:非本站域名测试正则表达式 参数值:正则表达式 说明:本参数用来测试某些组件中测试URL是否属于本站域名 备注:v1.1.8新添加 remoteImgSaveUrl:远程图片抓取接收程序URL 参数值:字符串(若不设置不...

    mysql官方中文参考手册

    7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用工具概述 8.2. myisampack:生成压缩...

    MYSQL中文手册

    7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 7.5.6. MySQL如何使用DNS 7.6. 磁盘事宜 7.6.1. 使用符号链接 8. 客户端和实用工具程序 8.1. 客户端脚本和实用工具概述 8.2. myisampack:...

Global site tag (gtag.js) - Google Analytics