`

java 正则表达式 抓取网页中的新闻

阅读更多
转自 http://www.iteye.com/topic/211745
package rssTest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author Der
 * @date   05-01
 * @E-mail uidin@163.com
 * */
public class MyRSS
{
	/**
	 * 获取搜索结果的html源码
	 * */
	public static String getHtmlSource(String url)
	{
		
		StringBuffer codeBuffer = null;
		BufferedReader in=null;
		try
		{
			URLConnection uc = new URL(url).openConnection();

			/**
			 * 为了限制客户端不通过网页直接读取网页内容,就限制只能从浏览器提交请求.
			 * 但是我们可以通过修改http头的User-Agent来伪装,这个代码就是这个作用
			 * 
			 */
			uc.setRequestProperty("User-Agent",
					"Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");

			// 读取url流内容
			in = new BufferedReader(new InputStreamReader(uc
					.getInputStream(), "gb2312"));
			codeBuffer = new StringBuffer();
			String tempCode = "";
			// 把buffer内的值读取出来,保存到code中
			while ((tempCode = in.readLine()) != null)
			{
				codeBuffer.append(tempCode).append("\n");
			}
			in.close();
		}
		catch (MalformedURLException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		
		return codeBuffer.toString();
	}

	/**
	 * 正则表达式
	 * */
	public static String regex()
	{
		String googleRegex = "<div class=g>(.*?)href=\"(.*?)\"(.*?)\">(.*?)</a>(.*?)<div class=std>(.*?)<br>";
		return googleRegex;
	}

	/**
	 * 测试用
	 * 在google中检索关键字,并抽取自己想要的内容
	 * 
	 * */
	public static List<String> GetNews()
	{
		List<String> newsList = new ArrayList<String>();
		String allHtmlSource = MyRSS
				.getHtmlSource("http://www.google.cn/search?complete=1&hl=zh-CN&newwindow=1&client=aff-os-maxthon&hs=SUZ&q=%E8%A7%81%E9%BE%99%E5%8D%B8%E7%94%B2&meta=&aq=f");
		Pattern pattern = Pattern.compile(regex());
		Matcher matcher = pattern.matcher(allHtmlSource);

		while (matcher.find())
		{
			String urlLink = matcher.group(2);
			String title = matcher.group(4);
			title = title.replaceAll("<font color=CC0033>", "");
			title = title.replaceAll("</font>", "");
			title = title.replaceAll("<b>...</b>", "");

			String content = matcher.group(6);
			content = content.replaceAll("<font color=CC0033>", "");
			content = content.replaceAll("</font>", "");
			content = content.replaceAll("<b>...</b>", "");

			newsList.add(urlLink);
			newsList.add(title);
			newsList.add(content);
		}
		return newsList;
	}

	/**
	 * main方法
	 * */
	public static void main(String[] args)
	{
		System.out
		.println(MyRSS
				.getHtmlSource("http://main.house.sina.com.cn/news/zckb/index.html"));
	}
}

分享到:
评论

相关推荐

    使用正则表达式抓取页面Email

    在IT行业中,正则表达式...总之,利用正则表达式抓取网页中的电子邮件地址是一项常见的任务,它需要结合对正则表达式、HTML解析以及网络请求的理解。在实际操作中,应根据具体需求进行调整,确保抓取的效率和准确性。

    用正则表达式提取SQL

    标题“用正则表达式提取SQL”涉及到的是在编程中如何使用正则表达式来从文本或代码中抓取SQL语句的相关知识。在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者...

    精通正则表达式(第三版)简体中文版

    - **Java中的正则表达式**:Java提供了java.util.regex包来支持正则表达式的使用。 - **JavaScript中的正则表达式**:JavaScript的正则表达式对象提供了丰富的功能,包括全局匹配、忽略大小写等选项。 - **.NET框架...

    正则表达式.rar

    本资料压缩包包含了一系列关于Java正则表达式的视频教程,旨在帮助用户深入理解和熟练运用这一技术。 1. **正则表达式简介** - 正则表达式(Regular Expression)是由特殊字符和普通字符组成的模式,用于描述一...

    java正则表达式匹配网页所有网址和链接文字的示例

    在Java编程中,正则表达式是处理文本模式匹配的强大工具,尤其在处理网页内容时,如提取网址和链接文字。这个示例展示了如何使用Java的正则表达式来匹配网页中的所有网址和链接文字。下面将详细讲解相关知识点。 1....

    精通正则表达式中文版英文版_中文版为扫描版

    正则表达式不仅用于简单的查找和替换,还能在数据验证(如电子邮件地址或电话号码格式检查)、文本分析、网页抓取等场景中发挥巨大作用。通过学习《精通正则表达式》,读者将能够编写更高效、更精确的正则表达式,...

    网页抓取 正则表达式 前台处理json对象

    综上所述,这个项目可能涉及到使用网页抓取技术获取网页数据,然后利用正则表达式清洗和解析数据。在前端部分,可能通过AJAX请求获取后端服务的JSON数据,并在页面上进行实时更新和展示。如果涉及到跨域问题,可能...

    正则表达式的妙用

    这展示了一个具体的例子,即如何利用正则表达式解析网页内容,抓取隐藏在HTML代码中的特定信息。 正则表达式的核心在于其模式匹配能力。它由一系列字符、特殊符号和操作符组成,可以匹配各种复杂的数据格式。例如,...

    精通正则表达式电子书

    - **Java的深入探讨**:更新了全书内容,特别是增加了对Sun公司的java.util.regex包的深入探讨,这是Java中标准的正则表达式实现。 - **不同版本之间的比较**:书中还包含了对不同语言和工具版本中的正则表达式特性...

    JAVA正则表达式小程序

    本项目"JAVA正则表达式小程序"利用Java语言结合正则表达式,实现了从网页中抓取特定内容并存储为CSV(Comma-Separated Values)文件的功能。下面我们将深入探讨Java中的正则表达式以及如何与CSV文件操作相结合。 1....

    正则表达式在网页处理中的应用[借鉴].pdf

    正则表达式是一种强大的文本处理工具,常用于网页处理中,包括数据验证、内容提取等任务。在软件网络技术领域,正则表达式是程序员必备的技能之一。 首先,正则表达式允许开发者以一种简洁的方式描述字符串模式,...

    正则表达式测试工具

    "RegexTester.exe"很可能是一款正则表达式测试软件,用户可以通过它输入自定义的正则表达式,并在提供的文本输入区域中测试这个表达式是否能正确匹配目标字符串。这类工具通常具有以下功能: 1. **实时匹配反馈**:...

    达内JAVA的正则表达式

    提供的`RegexTester.exe`可能是一个用于测试和调试Java正则表达式的工具,它可以帮助开发者直观地看到正则表达式的匹配效果,理解正则表达式的运作方式。 总之,Java中的正则表达式是编程中不可或缺的一部分,掌握...

    正则表达式_正则表达式_正则_

    5. **正则表达式在编程语言中的应用** - Python的`re`模块提供了丰富的正则操作功能。 - JavaScript的`String.prototype.match()`、`String.prototype.replace()`等方法也支持正则表达式。 - Java中的`java.util....

    Java正则表达式入门 + HTMLParser使用详解.ppt

    Java正则表达式是编程语言Java中用于处理字符串的强大工具,尤其在文本处理、数据验证和数据提取等方面具有广泛的应用。正则表达式通过一种特殊的语法来定义模式,可以匹配、查找、替换和验证字符串中的特定序列。在...

    RegexTool正则表达式测试小工具

    它允许用户方便地验证和实验正则表达式,以确保它们能够按预期工作,并从文本或网页中提取所需的数据。在IT领域,正则表达式(Regex)是用于匹配字符串模式的强大工具,广泛应用于数据验证、搜索与替换、文本分析等...

    超链接正则表达式

    在网页解析、数据抓取或文本处理等场景中,掌握超链接的正则表达式技巧非常关键。 在JavaScript中,正则表达式是内置的,可以通过构造函数`RegExp`创建,或者直接在字符串中使用。例如,一个简单的超链接正则可能...

    正则表达式语法(30分钟入门)

    2. **数据提取**:在网页抓取或数据分析中,正则表达式可以用来从大量文本中提取特定信息。 3. **输入验证**:在网络表单中,使用正则表达式验证用户输入的数据格式,如密码强度、邮箱格式等。 四、学习资源 要...

    正则表达式提取html中的所有的Email地址

    在IT行业中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换等操作。在本案例中,我们关注的是如何使用C#编程语言来编写正则表达式,从HTML文档中提取所有的电子邮件地址。下面将...

    RegexTester 正则表达式

    正则表达式的学习曲线可能有些陡峭,但掌握好正则表达式对于任何IT从业者都是极其宝贵的技能,无论是进行数据分析、网页抓取,还是在代码中进行复杂文本处理,都能大大提高效率。RegexTester作为一款小巧实用的工具...

Global site tag (gtag.js) - Google Analytics