`
li_sir
  • 浏览: 115435 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java正则表达式抽取html数据

    博客分类:
  • java
阅读更多
由于项目需求,需要抓取一些网站数据,于是这两天研究了下java正则表达式和java模拟http请求。
一直以来,看到正则表达式就头疼,认为很难看懂,需要就从网上搜,但是这次需要抽取的是html数据,样式多样,靠不住百度,只能靠自己了。

介绍下正则表达式学习历程:
首先是在百度上搜了些简单的入门文章,比如[a-zA-Z]、.*等的意思,然后主要是通过java API文档介绍进行学习,其实里面都比较详细,主要是两个类Pattern和Matcher,
在包java.util.regex下,使用其实很简单,主要步骤:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

在学习过程中主要对组有点难懂,查了好久,终于有个文章让我恍然大悟,
我的理解是,组的主要作用是方便提取数据,例如一个正则表达式"<a>(.*?)</a>",
里面包含两个组,第一个就是整个表达式,第二个则是<a></a>里的内容,就是(.*?)的内容,这样如果m.group(0)提取的内容就是符合整个表达式的内容,包括<a></a>,
m.group(1)则是里面的内容。java正则表达式中(a)表示组

下面是我写的一个抓取百度上查看某只股票信息的程序。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PersonalData
{
public static void main(String[] args) throws Exception{
      URL url= new URL("http://www.baidu.com/s?wd=000897");
      URLConnection urlConnection=   url.openConnection();
      BufferedReader br=new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
      String str="";
      StringBuffer content=new StringBuffer();
      while((str=br.readLine())!=null){
       content.append(str);
      }
      br.close();
    String regx1="<b style=\"font-size: 1.4em; text-align:center;color:#.*;\">(.*?)</b>(.*?)<b style=\"font-size: 1.1em; color:#.*;\">(.*?)</b>(.*?)开盘:</td> <td style=\"(.*?)\">(.*?)</td>(.*?)<td style=\"  color:#.*;width:91px;\">(.*?)</td>(.*?)<td style=\"  color:(.*?);width:91px;\">(.*?)</td>";
      Pattern p= Pattern.compile(regx1);
      String text=content.toString();
      Matcher  macher =p.matcher(text);
     while(macher.find()){
      System.out.println("现价:"+macher.group(1).trim());
      System.out.println("幅度:"+macher.group(3).trim());
      System.out.println("开盘价:"+macher.group(6).trim());
      System.out.println("最高:"+macher.group(8).trim());
      System.out.println("最低:"+macher.group(11).trim());
     }
}
}

代码简单,没进行封装。(注:百度上搜索看到的股票信息不是即时的,有一定时间的延迟)
分享到:
评论

相关推荐

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

    例如,通过构建复杂的正则表达式来解析HTML文档,从中抽取特定的链接地址或文本内容;利用正则表达式来进行邮件地址的有效性检查等。 #### 七、总结 《精通正则表达式(第三版)简体中文版》是一本全面介绍正则...

    精通正则表达式(第三版).pdf

    正则表达式作为一种强大的文本处理工具,在多种编程语言中都有着广泛的应用,包括Java、JavaScript等。接下来,我们将深入探讨与该书相关的几个关键知识点。 ### 正则表达式基础 正则表达式是一种用于匹配字符串中...

    jsp+正则表达式实用总结

    7. **数据提取**:从网页抓取或API响应中,使用正则表达式抽取需要的数据。 通过学习和掌握JSP与正则表达式的结合,开发者不仅可以提高代码的效率,还能提升网站的安全性和用户体验。对于准备面试或者正在进行复习...

    正则表达式教程(经典)

    几乎所有的编程语言都支持正则表达式,如JavaScript、Python、Java、C#等。它们提供了内置的库或函数来解析和操作正则表达式,例如JavaScript中的`match()`、`search()`、`replace()`等方法,Python中的`re`模块。 ...

    正则表达式

    [JAVA] javascript 正则表达式 秋雨叶 发表于 2004-12-9 14:54:13 正则表达式是一个描述字符模式的对象。 JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的...

    w3school 正则表达式教程 飞龙整理 20141001

    正则表达式不仅在编程语言中广泛使用,如C#、Java、JavaScript、Python和Ruby,还常见于文本编辑器和搜索引擎等应用中。 在正则表达式中,有几个基本的元字符和符号具有特殊意义: 1. `.`:匹配任意单个字符,除了...

    正则表达式帮助文件chm

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。它通过一种简洁而强大的语法来定义一系列字符或字符序列,可以用来检测一个字符串是否...

    正则表达式的笔记记录呢

    正则表达式是一个深奥且强大的工具,学习和理解其原理和技巧对于处理文本数据至关重要。熟练掌握正则表达式可以大大提高编程效率和代码质量。通过不断练习和使用,你可以更好地理解和运用这些概念来解决各种文本处理...

    网页正则标签抽取例子

    本文将详细讲解如何使用正则表达式进行网页标签抽取,并通过TextRank算法对提取的信息进行关键词抽取,以便进一步的处理和应用。 首先,让我们理解正则表达式(RegExp)。正则表达式是一种模式匹配工具,可以用来...

    Regular Expressions Cookbook

    此外,《正则表达式 Cookbook》还涵盖了高级主题,如正则表达式的性能优化、使用正向和反向查找、使用正则表达式进行替换操作,以及在不同的编程语言(如Python、Java、JavaScript和Perl等)中如何使用正则表达式。...

    Java精确抽取网页发布时间

    因此,开发者需要根据实际遇到的网页类型和数据源不断调整和完善这些正则表达式,以便更精确地匹配和解析日期。 在完成日期的提取后,通常还需要将非标准格式的日期转换为统一的"yyyy-MM-dd HH:mm:ss"格式。这可以...

    java采集网站数据,可以自定义修改采集

    通过修改正则表达式,用户可以定制化地抽取网页中的特定数据,如文章标题、作者、评论内容等。同时,"软件自带了雅虎知识堂,8848look"可能意味着该项目已经预设了一些特定网站的数据采集模板,用户可以直接应用或...

    正则函数提取图片地址

    总之,正则函数提取图片地址是一个常见的任务,通过理解和应用正则表达式,我们可以高效地从HTML文档中抽取图片资源的URL,这对于网站维护、数据分析等工作来说非常实用。希望这个例子能帮助你掌握这一技能,并在...

    xianmu.rar_网页信息_获取网页

    例如,如果要从HTML源代码中抽取URLs,你可以编写一个正则表达式来匹配常见的URL结构。 接下来,我们看到压缩包中的文件名为"getMessage.jar"和"getMessage"。这可能意味着项目包含一个Java编译后的可执行文件(....

    解析网页利器组合(正则、jsoup、beanshell、dozer)资源

    通过熟练掌握正则表达式的语法和用法,开发者可以高效地从复杂的HTML代码中抽取所需信息。 接着,Jsoup是一个Java库,专为处理真实世界的HTML而设计。它提供了一套丰富的API,使得解析、遍历和修改HTML文档变得简单...

    基于Java的网页抽取工具 Krabber.zip

    - **正则表达式**:掌握正则表达式,用于更复杂的文本匹配和替换操作。 - **网络协议**:理解HTTP协议的基本原理,有助于处理网络请求和响应。 通过Krabber,开发者可以快速构建起自己的网页抓取系统,用于数据挖掘...

    MusicAnalysis.rar

    通过正则表达式(Regular Expression)进行数据匹配和提取,则是爬虫技术中的常见手段,它能高效地定位和抽取网页中的特定信息。 “并通过正则表达式获得有用需要数据”,正则表达式是一种强大的文本处理工具,可以...

    RegExUtil.rar_图形图象_Java_

    - **图像文件路径处理**:正则表达式可以用于从字符串中提取或替换图像文件的路径,例如,从HTML代码中抽取图片链接。 - **元数据解析**:在处理图像元数据时,如EXIF信息,正则表达式可以帮助提取特定格式的数据...

Global site tag (gtag.js) - Google Analytics