package org.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 数据采集
*/
public class Main {
public static void main(String[] args) {
String strUrl = "http://news.baidu.com";
try {
URL url = new URL(strUrl);
BufferedReader br = new BufferedReader(new InputStreamReader(
url.openStream()));
String strRead = ""; // new 一个字符串来装载 BufferedReader 读取到的内容
// 定义1个规则用于获取a标签的数据
String aPattern = "(?i)]*?href=\"([^\"]*)\"[^>]*>[^<>]*";
int count = 0;
while (null != (strRead = br.readLine())) {
// 捕获a标签数据
String strGet = getMatchData(aPattern, strRead);
if (!strGet.equals("")) {
// 获取想要得到的a标签信息
System.out.println("新闻信息:" + strGet);
count++;
}
}
br.close();
System.out.println("共收集到" + count + "条记录");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 抓取html中需要的内容
* @param pattern 要抓取内容的正则表达式
* @param str html数据
* @return
*/
public static String getMatchData(String pattern, String htmlStr) {
Matcher m = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE).matcher(
htmlStr);
// 返回捕获到的数据
return m.find() == true ? m.group() : "";
}
}