读html然后解析得出"<a href="和">"之间的内容,
可以用个递归写个函数来求.
可以用个递归写个函数来求.
解决方案 »
- 怎么在循环中使用spring里的bean配置
- 这个问题搞的我头都大了,请大家帮助关于webservice的调用
- 简单获得session值的问题?
- 在将sybase中的记录生成xml文件时,ISO8859-1与gb2312编码转换成为效率的瓶颈,如何解决?
- ok,我知道错了,现在请教前辈们,如何调用ejb的local接口?
- 什么是SOCKET常连接?
- 急!TOMCAT架好了,修改默认页面
- 文件相对目录的麻烦?
- 对权限做到细粒度控制的开源项目Robusta AC!
- oracle 中 sql语句优化问题,求教大佬!!!
- weblogic8.1与mysql的连接问题 帮忙啊
- jb8+自带的tomcat4.1.12关于JNDI的问题
<mailto:...>,<telnet...>不知道算不算
js中也可能隐含超链接,这个不好找
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.*;public class GetURL {
public GetURL() {
}
public ArrayList parse(URL url) throws IOException {
//找出<和>之间的部分,用正则表达式得到对应的超链接
InputStream in = url.openStream();
StringBuffer sb = new StringBuffer();
int ch;
boolean flag = false;
Pattern pattern = Pattern.compile("href=\"?([\\w:.\\/?!@#&]+)\"?");
//match frame,img
Pattern pattern1 = Pattern.compile("src=\"?([\\w:.\\/?!@#&]+)\"?");
ArrayList urls = new ArrayList(10);
while ((ch=in.read())!=-1) {
if (ch=='<') {
flag = true;
continue;
}
if (ch=='>') {
flag = false;
Matcher matcher = pattern.matcher(sb.toString());
if (matcher.find()) {
String s = matcher.group(1);
urls.add(s);
}
else {
matcher = pattern1.matcher(sb.toString());
if (matcher.find()) {
url.add(matcher.group(1));
}
}
sb.setLength(0);
continue;
}
if (flag) {
sb.append((char)ch);
}
}
return urls;
}
public static void main(String[] args) throws Exception{
GetURL get = new GetURL();
URL url = new URL("http://www.bit.edu.cn/");
ArrayList urls = get.parse(url);
Iterator iterator = urls.iterator();
while (iterator.hasNext()) {
String s = (String)iterator.next();
System.out.println(s);
}
}
}