原文地址:http://www.blogjava.net/youxia/archive/2008/11/07/239310.html
各位朋友,等人等车等吃饭的时候可以干些什么呢?掏出手机看电子书是不错的选择。昨天,我写了一个小程序,基本上可以把新浪读书频道排行榜一网打尽。
程序只用到了Java中的这样一些知识:
1、URL类,用来连接新浪网
2、BufferedReader类,用来读取数据
3、Pattern类和Matcher类,使用正则表达式来提取小说的正文
完整的代码如下:
/*
*Tochangethistemplate,chooseTools|Templates
*andopenthetemplateintheeditor.
*/
packageebookdownloaderforsinanzt;
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.net.URL;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
/**
*
*@author海边沫沫
*/
publicclassMain{
/**
*@paramargsthecommandlinearguments
*/
publicstaticvoidmain(String[]args){
intupbound=Integer.parseInt(args[1]);
for(inti=1;i<=upbound;i++){
System.out.println(getParagraph("http://book.sina.com.cn/nzt/lit/"+args[0]+"/",i));
System.out.println();
}
}
privatestaticStringgetParagraph(Stringurl,intindex){
intstatus=0;
Stringparagraph="";
try{
URLebook=newURL(url+index+".shtml");
BufferedReaderreader=newBufferedReader(newInputStreamReader(ebook.openStream()));
Stringline;
while((line=reader.readLine())!=null){
if(status==0){
//还没有碰到标题
Patternpattern=Pattern.compile("(.*)<tr><tdclass=title14align=center><fontcolor=red><B>(.*)</B></font></td></tr>(.*)");
Matchermatcher=pattern.matcher(line);
if(matcher.matches()){
paragraph+=matcher.group(2);
paragraph+="\n\n";
status=1;
}
}
if(status==1){
//还没有碰到文章的开头
Patternpattern=Pattern.compile("(.*)<fontid=\"zoom\"class=f14><p>(.*)<!--NEWSZW_HZH_BEGIN-->(.*)");
Matchermatcher=pattern.matcher(line);
if(matcher.matches()){
paragraph+=matcher.group(2);
status=2;//碰到了正文中的画中画
}
}
if(status==2){
Patternpattern=Pattern.compile("(.*)<!--NEWSZW_HZH_END-->(.*)</p>");
Matchermatcher=pattern.matcher(line);
if(matcher.matches()){
paragraph+=matcher.group(2);
status=3;
}
}
}
//替换掉</p><p>
returnparagraph.replaceAll("</p><p>","\n\n");
}catch(Exceptione){
System.out.println(e.toString());
returnnull;
}
}
}
让大家看看截图:
新浪读书频道排行榜:
我写的小程序的运行画面:
下载下来的成果:
最后让大家看看我的IDE,我用上了最新版的NetBeans,还把它的主题改成了苹果样子:
最后要说的是,新浪读书频道上的书,根据URL不同,其源代码的结构也不同,所以要用不同的正则表达式来提取。上面的程序只能提取http://book.sina.com.cn/nzt/lit/小说名/序号.shtml这样的电子书。但是对程序做一点修改是很简单的。
相关推荐
常用功能一网打尽。 1.命令帧读写。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持XYMBool批量读写。 5.支持YM单点读写。 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。
该系统成本还是挺高找了很久也没找到,很多会员反馈需要帮找一下该系统,没办法只有放血购买了,整体安装过程比较顺利一次成型,对比了一下正版SAAS系统系统没多大差别,唯一没有师傅端小程序前端。如果需要该前端...
这里汇聚了各类小程序开发所需的精选资源,无论是设计素材、UI组件、还是功能插件,我们都为您一网打尽。我们深知每位开发者对项目的独特需求,因此我们的资源包不仅数量丰富,而且质量上乘,确保满足您的各种开发...
本篇将深入探讨“运动荟小程序”的核心概念、功能特性以及实际应用,帮助用户更好地理解和利用这款小程序。 首先,我们要了解什么是小程序。小程序是微信、支付宝等平台推出的一种无需下载安装即可使用的应用程序,...
常用功能一网打尽。 1.命令帧读写。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持XYMBool批量读写。 5.支持YM单点读写。 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。
常用功能一网打尽。 1.命令帧读写。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支持Q单点读写。 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。
Labview与基恩士PLC串口通讯通信常用功能一网打尽。 1.源码开放。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支持Bool单点读写。 不安装插件,完胜OPC 等。
安装完成后,你将拥有一个内容丰富的直播平台。但要注意,港澳台海外频道并非直接可见,它们被设计为隐藏模式,需要通过遥控器进行特殊操作来解锁。具体步骤如下:在打开软件后,不要立即使用,而是长按遥控器的返回...
常用功能一网打尽。 1.命令帧读写。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持XYMBool批量读写。 5.支持YM单点读写。 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。
LabVIEW网口通讯西门子PLC,支持200、300、1200、1500、400、SMART全系列PLC 常用功能一网打尽。 NETCOM通讯。 1.命令帧读写。 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。
本文将深入探讨“一网打尽Android-UI”中的关键知识点,包括各种UI组件的使用和功能。 1. **关于Android的一些设计**: Android的设计原则强调简洁、直观和一致。开发者应遵循Material Design指南,提供清晰的层次...
LabVIEW网口TCP通讯西门子PLC,支持200、300、1200、1500、400、...常用功能一网打尽。 1.命令帧读写。 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。 原创视频 创作不易,非诚勿扰。 谢谢大家。
这四个词都与遵循规则、规定或标准有关,但在搭配和语境上有所区别。 1. abide v. 后接 by,意为“遵守,同意”。例如:“I will abide by the director's decision.”(我将遵从主任的决定。) 2. adhere v. 后接 ...
常用功能一网打尽。 1.命令帧读写。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持XYMBool批量读写。 5.支持YM单点读写。 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。
它使用一个字节(8位)表示一个字符,其中最高位为0,表示标准ASCII字符集,可以表示128个字符,包括大小写字母、数字、控制字符和一些特殊符号。尽管如此,ASCII只能够表示英文字符,对于像中文这样拥有成千上万...
常用功能一网打尽。 1.命令帧读写。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支单点读写。 6.标签管理 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。
LabVIEW网口TCP通讯欧姆龙OMRON PLC,FINSTCP NJ501 CJ2M,常用功能一网打尽。 1.源码开放。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支持Bool单点读写。 不安装插件,完胜OPC ...