java 采集新闻数据

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() : "";
	}
}

你可能感兴趣的:(标签,java,正则表达式)