try {
//创建一个url对象来指向要采集信息的网址
URL url = new URL(urlStr)
//将读取到的字节转化为字符
InputStreamReader inStrRead = new InputStreamReader(url.openStream(),"utf-8")
//读取InputStreamReader转化成的字符
BufferedReader bufRead = new BufferedReader(inStrRead)
//读到的内容不为空
while (bufRead.readLine() != null) {
System.out.println(bufRead.readLine())
}
bufRead.close()
} catch (IOException e) {
e.printStackTrace()
}
Java网页数据采集器例子如下:import java.util.regex.Matcher
import java.util.regex.Pattern
/**
* Group 类 用于匹配和抓取 html页面的数据
*/
public class Group {
public static void main(String[] args) {
// Pattern 用于编译正则 这里用到了3个正则 分别用括号()包住
// 第1个正则用于匹配URL 当然这里的正则不一定准确 这个匹配URL的正则就是错误的 只是在这里刚好能匹配出来
// 第2个正则是用于匹配标题 SoFlash的
// 第3个正则用于匹配日期
/* 这里只用了一条语句便把url,标题和日期全部给匹配出来了 */
Pattern p = Pattern
.compile("='(\\w.+)'>(\\w.+[a-zA-Z])-(\\d{1,2}\\.\\d{1,2}\\.\\d{4})")
String s = "<a href='http://www.cnblogs.com/longwu'>SoFlash-12.22.2011</a>"
Matcher m = p.matcher(s)
while (m.find()) {
// 通过调用group()方法里的索引 将url,标题和日期全部给打印出来
System.out.println("打印出url链接:" + m.group(1))
System.out.println("打印出标题:" + m.group(2))
System.out.println("打印出日期:" + m.group(3))
System.out.println()
}
System.out.println("group方法捕获的数据个数:" + m.groupCount() + "个")
}
}
下输出结果:
打印出url链接:http://www.cnblogs.com/longwu
打印出标题:SoFlash
打印出日期:12.22.2011
group方法捕获的数据个数:3个
如果代码能力不是很好的话可以借助一些软件去抓取新闻的字段把数据抓取下来以后可以选择存入数据库当中
需要去重的话,在Java的集合框架中就有HashSet和HashMap可以对数据去重
使用带Hash的集合时一定要注意,如果是存放自定义的对象一定要重写equals方法和HashCode方法