代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
获取网页所有网址和链接标题
作者:
dezai
/ 发布于
2014/1/26
/
363
通过指定URL,获取网页上所有的“链接URL”和“链接文字”。
/ 通过指定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.9iyyzm.com/"); myurl.getUrlContent(); myurl.getContentArea(); myurl.getStringInUrl("http://www.9iyyzm.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; } }
试试其它关键字
获取网址
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
dezai
贡献的其它代码
(
1065
)
.
双色球
.
列出所有物理网络适配器
.
快乐数的 Python 实现
.
计算当月还剩天数
.
猜属相
.
二十四小时时钟
.
每日一语
.
很酷的日历
.
超长日历表单
.
最简单的时钟
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3