原文地址: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这样的电子书。但是对程序做一点修改是很简单的。
相关推荐
该系统成本还是挺高找了很久也没找到,很多会员反馈需要帮找一下该系统,没办法只有放血购买了,整体安装过程比较顺利一次成型,对比了一下正版SAAS系统系统没多大差别,唯一没有师傅端小程序前端。如果需要该前端...
这里汇聚了各类小程序开发所需的精选资源,无论是设计素材、UI组件、还是功能插件,我们都为您一网打尽。我们深知每位开发者对项目的独特需求,因此我们的资源包不仅数量丰富,而且质量上乘,确保满足您的各种开发...
本篇将深入探讨“运动荟小程序”的核心概念、功能特性以及实际应用,帮助用户更好地理解和利用这款小程序。 首先,我们要了解什么是小程序。小程序是微信、支付宝等平台推出的一种无需下载安装即可使用的应用程序,...
安装完成后,你将拥有一个内容丰富的直播平台。但要注意,港澳台海外频道并非直接可见,它们被设计为隐藏模式,需要通过遥控器进行特殊操作来解锁。具体步骤如下:在打开软件后,不要立即使用,而是长按遥控器的返回...
常用功能一网打尽。 1.命令帧读写。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持XYMBool批量读写。 5.支持YM单点读写。 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。
本文将深入探讨“一网打尽Android-UI”中的关键知识点,包括各种UI组件的使用和功能。 1. **关于Android的一些设计**: Android的设计原则强调简洁、直观和一致。开发者应遵循Material Design指南,提供清晰的层次...
这四个词都与遵循规则、规定或标准有关,但在搭配和语境上有所区别。 1. abide v. 后接 by,意为“遵守,同意”。例如:“I will abide by the director's decision.”(我将遵从主任的决定。) 2. adhere v. 后接 ...
它使用一个字节(8位)表示一个字符,其中最高位为0,表示标准ASCII字符集,可以表示128个字符,包括大小写字母、数字、控制字符和一些特殊符号。尽管如此,ASCII只能够表示英文字符,对于像中文这样拥有成千上万...
Labview与基恩士PLC串口通讯通信常用功能一网打尽。 1.源码开放。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支持Bool单点读写。 不安装插件,完胜OPC 等。
"Teechart应用文档,VFP示例及控件一网打尽Demo"是一个综合性的资源包,专门针对Teechart这款图表库在Visual FoxPro(VFP)环境中的使用进行了详细阐述。这个压缩包包含了两个重要的部分:Delphi的演示程序和与VFP...
GetResources一网打尽是一款网络资源提取工具,它可以提取所有文本...更新内容:GetResources一网打尽V4.0.0新增了保存网页和对网页进行快照的功能,修改了部分系统在安装程序时,出现的GetResources文件数据丢失的问题。
LabVIEW网口TCP通讯欧姆龙OMRON PLC,FINSTCP NJ501 CJ2M,常用功能一网打尽。 1.源码开放。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支持Bool单点读写。 不安装插件,完胜OPC ...
高中数列 |“递推式求通项”一网打尽,基本的几种求数列的方法都在其中,要求所有同学必须掌握,不会的可以留言,不懂得可以提问,我将一一回答。
在本篇文件中,主要讲述了在IBM WebSphere Portal中整合SAP系统的解决方案,并且探讨了...通过这些介绍,读者可以对如何将SAP系统与WebSphere Portal无缝整合有一个全面的了解,从而解决实际操作中可能出现的各种难题。
《全面解析YY设计符号工具:从半角到全角,特殊符号一网打尽》 在数字时代,网络社交平台的个性化表达日益丰富,尤其是在YY这样的语音聊天平台中,马甲设计与频道布置成为了用户展示个性的重要方式。为了帮助用户在...
标题中的“八木-双菱-长城-各种图片等等》》一网打尽”似乎是在指这个压缩包包含了与这三个关键词相关的多种类型的图片资源。在这个描述中,“八木”、“双菱”和“长城”可能是图片的主题或者来源,可能是摄影地点...
【标题】:“网站效果后台管理一网打尽” 在当今数字化时代,网站的后台管理系统扮演着至关重要的角色,它负责网站内容的维护、用户管理、数据处理等核心功能。本资源集合涵盖了“java模板”、“jsp网站模板”、...
"安卓应用开发范例一网打尽"这个资源集合,正是为了帮助开发者们解决这些问题而准备的。下面,我们将深入探讨其中可能涵盖的一些关键知识点。 1. **环境搭建**:开发安卓应用首先需要安装Android Studio,它是...