学习java的正则表达式,抓取网页并解析HTML部分内容
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
public class HttpClientDemo {
/**
*
* @param url
* @return
* @throws Exception
*/
public static String getHTML(String url) throws Exception {
HttpClient httpClient = new HttpClient();
GetMethod getMethod = new GetMethod(url);
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + getMethod.getStatusLine());
return null;
}
// 读取内容
byte[] responseBody = getMethod.getResponseBody();
getMethod.releaseConnection();
return new String(responseBody);
}
/**
*
* @throws Exception
*/
public static void test(String url) throws Exception{
String html = getHTML(url);
Pattern p = null;
Matcher m = null;
StringBuffer sb0 = new StringBuffer();
// ul正则
String regex = "<ul class=\"d2_9\">([\\s\\S]*<li>)<a.*href='(.*)'.*>(.+?)</a> \\[(.*)\\]</li>([\\s].*)";
// 链接正则
String regexa = "<a.*href='(.*)'.*>(.+?)</a> \\[(.*)\\]";
p = Pattern.compile(regex);
// m = p.matcher(sb.toString());
m = p.matcher(html);
int count = 0;
// ul字符串
while (m.find()) {
sb0.append(m.group());
}
//System.out.println(sb0.toString());
p = Pattern.compile(regexa);
m = p.matcher(sb0.toString());
// 链接地址和标题
while (m.find()) {
System.out.println("地址:" + m.group(1));
System.out.println("标题:" + m.group(2));
System.out.println("时间:" + m.group(3));
count++;
}
System.out.println("抓取条数:"+count);
}
public static void main(String[] args) throws Exception {
String url = "http://cpc.people.com.cn/GB/194302/194306/index.html";
test(url);
}
}
运行结果:
- 大小: 23 KB
分享到:
相关推荐
Java 第三阶段增强分析需求,代码实现能力【正则表达式】---- 代码 Java 第三阶段增强分析需求,代码实现能力【正则表达式】---- 代码 Java 第三阶段增强分析需求,代码实现能力【正则表达式】---- 代码 Java 第三...
正则表达式---------资料整理,适合新手学习使用,对正则表达式的学习很有帮助
Java正则表达式详解-软件频道-正则表达式-天极网
正则表达式 正则表达式--常用的
正则表达式汇总
常用正则表达式大全: 匹配中文字符的正则表达式 匹配空白行的正则表达式 匹配HTML标记的正则表达式 匹配Email地址的正则表达式 匹配网址URL的正则表达式 匹配国内电话号 匹配中国邮政编码 匹配身份证 匹配ip地址 ...
常用正则表达式-常用正则表达式-常用正则表达式 常用正则表达式-常用正则表达式-常用正则表达式
JAVA正则表达式--Pattern和Matcher 现在JDK1.4里终于有了自己的正则表达式API包,JAVA程序员可以免去找第三方提供的正则表达式库的周折了,我们现在就马上来了解一下这个SUN提供的迟来恩物- -对我来说确实如此。...
提取URL,正则表达式 - C# - 开发者参考网提取URL,正则表达式 - C# - 开发者参考网提取URL,正则表达式 - C# - 开发者参考网提取URL,正则表达式 - C# - 开发者参考网提取URL,正则表达式 - C# - 开发者参考网提取URL,...
广告过滤正则式 来自闻仲 可以和大家交流一下
正则表达式--强大的文本匹配工具,每个工程师都需要掌握的必备技能。这个文档看过一小时,算是基本入门了。 前提是有良好的Linux基础,对grep awk sed 要熟练。
《学习正则表达式》从正则表达式的基本概念讲起,到编写完整的sed和Perl脚本,再到转换HTML文件,将这种强大的工具解释得清晰透彻。书中贯穿了大量简洁明了的示例,旨在让读者轻松掌握正则表达式。此外,书中各在线...
director正则表达式插件--强大的字符串匹配工具 demo, 正则表达式功能很强大,匹配字符串很容易,现在,在director中借助这款插件,也可以实现正式表达式的功能了,lingo处理字符串更加容易。
正则表达式例子大全---正则表达式例子大全---常用的正则表达式都有
有时候,我们需要用正则表达式来分析一个计算式中的括号配对情况。比如,使用表达式 "\( [^)]* \)" 或者 "\( .*? \)" 可以匹配一对小括号。但是如果括号内还嵌有一层括号的话 ,如 "( ( ) )",则这种写法将不能够...
正则表达式(Regular Expression,简称:Regex)是一种文本模式的表示方法,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。正则表达式常用于字符串的搜索、替换、分割和校验等操作。 正则表达式由...
关于正则表达式一个ppt课件,适合初学者,介绍的很详细,欢迎收藏
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...
JS正则表达式详解-JavaScript-AJAX
Java正则表达式应用-Jakarta-ORO篇,这里详细的统计了正则表达式的在java中的运用,