`
huaye2007
  • 浏览: 38586 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

java 正则 抓取数据

 
阅读更多

刚开始不太熟悉正则,在网上搜了下资料,开始了正则的测试之后,终于可以抓取内容了

package com.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 抓取短信居的搞笑短信
 * http://www.dxju.com/dxw/gxdx/
 * */
public class Testdxju {

	/**
	 * 提取超链接里面的文本
	 * */
	public static String getRequestData(String urlStr) throws Exception{
		URL url = new URL(urlStr);
		HttpURLConnection urlConn =( HttpURLConnection) url.openConnection();
		int code = urlConn.getResponseCode();
		StringBuffer sb = new StringBuffer("");
		if(code == 200){
			BufferedReader br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"gb2312"));
			String str = null;
			while((str = br.readLine()) != null){
				//查看网页源代码之后,里面有多个表格,写此正则之后,就只有一个table了
				String regex2 = "<table.*>.*</table>";
				Pattern pt = Pattern.compile(regex2);
				Matcher mt = pt.matcher(str);
				while(mt.find()){
					//下面就是针对上面的table提取多个url
					String s = mt.group();
					System.out.println(s);
					String regex3 = ">(\\W*)$";//获取文本
					Pattern pt3 = Pattern.compile(regex3);
					String[] strArray = s.split("<[/]a>");//先将字符串以</a>分为字符串数组
					for(String sss:strArray){
						Matcher mt3 = pt3.matcher(sss);
						if(mt3.find()){
							System.out.println(mt3.group(1));
						}
					}
				}
				sb.append(str+"\r\n");
			}
		}
		return sb.toString();
	}
	public static void main(String[] args) {
		try {
			getRequestData("http://www.dxju.com/dxw/gxdx/");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

说下自己刚学到的几个正则里面比较重要的几点

字符串例子 String str="<table><tr><td>aaaaa</td></tr><tr><td>bbbbb</td></tr></table>";

1:重复的标记需要用split来获取成数组再匹配正则:比如table里面会有很多的td,我们需要td里的文本,则先将这个字符串以</td>这个标记来切割字符串,变成一个字符串数组

那么上面的str 经过split("<[/]td>")之后就变成<table><tr><td>aaaaa 和</tr><tr><td>bbbbb </tr></table> 三个字符串

在用正则表达式截取td后面的文本内容就是了 <td>(\\W*)$ 那么如何去掉td呢?注意里面正则表达式有个()小括号,这就是用来分组的,因为这里面只有一个()小括号,所以java代码里面

mt3  .group(1)获取的就是td的文本,多个的话,就是
mt3  .group(1),
mt3  .group(2)
mt3  .group(3)
。。。。。。。这样去取文本。




分享到:
评论

相关推荐

    java抓取网站数据

    无论是进行市场调研、竞品分析还是数据挖掘,掌握如何使用Java来抓取数据都是十分必要的。本篇文章将详细介绍如何使用Java语言抓取51job人才网上的Java职位需求数据。 #### 二、准备工作 在开始抓取之前,需要对...

    JAVA正则表达式小程序

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

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

    在Java编程中,正则表达式是处理文本模式匹配的强大工具,尤其在处理网页内容时,如提取网址和链接文字。...然而,对于大规模的数据抓取和处理,推荐使用更专业的网络爬虫框架,如Apache Nutch或Scrapy(Python)。

    用正则表达式提取SQL

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

    java使用正则抓取网页邮箱

    在这个场景中,我们使用Java的正则表达式功能来抓取网页上的邮箱地址。下面将详细解释这个过程以及涉及到的关键知识点。 首先,我们需要创建一个`URL`对象,它代表了要抓取网页的网络地址。在示例代码中,URL被初始...

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

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

    正则表达式.rar

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

    java抓取任何指定网页的数据

    在大数据时代背景下,从互联网上抓取数据变得尤为重要。这不仅能够帮助企业更好地了解市场动态,还能帮助个人获取所需的信息资源。而Java作为一种广泛使用的编程语言,在网页抓取方面有着强大的功能。 #### Java...

    详解JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片

    在Java编程中,抓取网页图片是一项常见的任务,特别是在数据抓取、网页分析或爬虫项目中。本文将详细介绍如何利用Java和正则表达式来抓取网页中的图片链接,并下载这些图片。以下是一个简单的Java程序示例,用于实现...

    java新闻抓取

    【Java新闻抓取】是一种利用编程...在Eclipse中,创建一个Java项目,编写`CatchNews`类,实现抓取腾讯IT业界新闻的功能,并可能涉及数据存储和处理。这不仅可以提升我们的编程技能,也是获取实时网络信息的有效手段。

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

    在IT行业中,正则表达式(Regular Expression)是一种强大的文本处理工具,尤其在网页数据抓取和信息提取方面,它的作用不可小觑。本篇我们将深入探讨如何利用正则表达式来抓取网页中的电子邮件地址。 电子邮件地址...

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

    在网页抓取后,通常需要对抓取的数据进行预处理,这时正则表达式就非常有用。它可以高效地从HTML或XML文档中提取所需数据,如URL、电话号码、电子邮件地址等。正则表达式语法丰富,如`\d`表示数字,`.`表示任意字符...

    正则表达式测试工具

    它在编程、数据分析和网页抓取等领域广泛应用。正则表达式的测试工具则是为了方便开发者验证和调试正则表达式而设计的。 "RegexTester.exe"很可能是一款正则表达式测试软件,用户可以通过它输入自定义的正则表达式...

    java抓取网站数据[参考].pdf

    无论是进行市场调研、竞品分析还是数据挖掘,掌握如何使用Java来抓取数据都是极其有用的。本文将以抓取“51job”网站上的Java职位需求为例,详细介绍使用Java进行网站数据抓取的技术细节。 #### 二、准备工作 在...

    java抓取网站数据.pdf

    无论是进行市场调研、竞品分析还是数据挖掘,掌握如何使用Java来抓取数据都是极其有用的。本文将以抓取“51job”网站上的Java职位需求为例,详细介绍使用Java进行网站数据抓取的技术细节。 #### 二、准备工作 在...

    正则截取TD里面包含的数据

    在Web开发和数据抓取过程中,正则表达式是一种非常强大的工具,可以帮助开发者快速准确地定位并提取所需的信息。 ### 正则表达式的概念 正则表达式(Regular Expression),简称regex或regexp,是一种用来匹配字符...

    java新闻抓取程序代码

    本Java新闻抓取程序代码通过 URL 和 URLConnection 实现了网页内容的获取,利用正则表达式解析 HTML,同时处理了图片的下载和替换。此外,还引入了日志记录机制来增强程序的可维护性和调试性。这种技术方案可以广泛...

    Java正则表达式使用

    Java正则表达式是Java语言中用于处理字符串的强大工具,它允许我们通过模式匹配和查找来解析、验证或提取文本。在本文中,我们将重点讨论如何在Java中使用正则表达式来抓取网页中的电子邮件地址以及进行代码统计。 ...

    java post获取网页数据以及get方式获取数据

    在文件里面,数据的抓取为正则表达式方式抓取数据 实现的方式有。 1.根据文件中出现的字符进行抓取。 2。可以抓取前后2端的中间数据 3。可以抓取前后(不包括前端和后端的数据)的中间的数据。 还有,懒的说了。上...

    Java中使用正则表达式获取网页中所有图片的路径

    这个过程通常在数据抓取或网络爬虫项目中很有用,它可以帮助我们解析网页内容,获取图片资源。 首先,我们来看给出的`getImageSrc`方法。这个方法接收一个`String`类型的参数`htmlCode`,即HTML源码。它的目标是从...

Global site tag (gtag.js) - Google Analytics