`

写个小程序将新浪读书频道一网打尽

阅读更多

 

原文地址: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;
}
}
}
让大家看看截图:
新浪读书频道排行榜:
01.PNG
我写的小程序的运行画面:
02.PNG
下载下来的成果:
03.PNG
最后让大家看看我的IDE,我用上了最新版的NetBeans,还把它的主题改成了苹果样子:
04.PNG
最后要说的是,新浪读书频道上的书,根据URL不同,其源代码的结构也不同,所以要用不同的正则表达式来提取。上面的程序只能提取http://book.sina.com.cn/nzt/lit/小说名/序号.shtml这样的电子书。但是对程序做一点修改是很简单的。

分享到:
评论

相关推荐

    同城到家预约上门小程序V3全开源版 vueadmin+unipp开源前端+小程序端

    该系统成本还是挺高找了很久也没找到,很多会员反馈需要帮找一下该系统,没办法只有放血购买了,整体安装过程比较顺利一次成型,对比了一下正版SAAS系统系统没多大差别,唯一没有师傅端小程序前端。如果需要该前端...

    一个个人学习的微信小程序资源包

    这里汇聚了各类小程序开发所需的精选资源,无论是设计素材、UI组件、还是功能插件,我们都为您一网打尽。我们深知每位开发者对项目的独特需求,因此我们的资源包不仅数量丰富,而且质量上乘,确保满足您的各种开发...

    运动荟小程序.zip

    本篇将深入探讨“运动荟小程序”的核心概念、功能特性以及实际应用,帮助用户更好地理解和利用这款小程序。 首先,我们要了解什么是小程序。小程序是微信、支付宝等平台推出的一种无需下载安装即可使用的应用程序,...

    超级直播看隐藏频道.docx

    安装完成后,你将拥有一个内容丰富的直播平台。但要注意,港澳台海外频道并非直接可见,它们被设计为隐藏模式,需要通过遥控器进行特殊操作来解锁。具体步骤如下:在打开软件后,不要立即使用,而是长按遥控器的返回...

    LabVIEW与信捷PLC串口通讯Modbus协议 官方协议,报文读取,安全稳定 程序代开发,代写程序 通讯配置,辅助测试

    常用功能一网打尽。 1.命令帧读写。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持XYMBool批量读写。 5.支持YM单点读写。 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。

    一网打尽Android-UI

    本文将深入探讨“一网打尽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 通讯与罗克韦尔 AB Allen Bradley PLC通讯 EhernetIP 网口TCP标签通讯 SL500实测通过 常用功能一网打尽 1.命令帧读写 2.支持 I16 I3

    常用功能一网打尽。 1.命令帧读写。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支单点读写。 6.标签管理 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。

    Labview与基恩士PLC串口通讯通信常用功能一网打尽 1.源码开放 2.支持 I16 I32 Float 批量读写 3

    Labview与基恩士PLC串口通讯通信常用功能一网打尽。 1.源码开放。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支持Bool单点读写。 不安装插件,完胜OPC 等。

    teechart应用文档,vfp示例及控件一网打尽demo

    "Teechart应用文档,VFP示例及控件一网打尽Demo"是一个综合性的资源包,专门针对Teechart这款图表库在Visual FoxPro(VFP)环境中的使用进行了详细阐述。这个压缩包包含了两个重要的部分:Delphi的演示程序和与VFP...

    一网打尽(GetResources) v4.60

    GetResources一网打尽是一款网络资源提取工具,它可以提取所有文本...更新内容:GetResources一网打尽V4.0.0新增了保存网页和对网页进行快照的功能,修改了部分系统在安装程序时,出现的GetResources文件数据丢失的问题。

    LabVIEW网口TCP通讯欧姆龙OMRON PLC,FINSTCP NJ501 CJ2M,常用功能一网打尽 1.源码开放

    LabVIEW网口TCP通讯欧姆龙OMRON PLC,FINSTCP NJ501 CJ2M,常用功能一网打尽。 1.源码开放。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支持Bool单点读写。 不安装插件,完胜OPC ...

    高一数列通项一网打尽.docx

    高中数列 |“递推式求通项”一网打尽,基本的几种求数列的方法都在其中,要求所有同学必须掌握,不会的可以留言,不懂得可以提问,我将一一回答。

    一网打尽sap各类用户疑难杂症

    在本篇文件中,主要讲述了在IBM WebSphere Portal中整合SAP系统的解决方案,并且探讨了...通过这些介绍,读者可以对如何将SAP系统与WebSphere Portal无缝整合有一个全面的了解,从而解决实际操作中可能出现的各种难题。

    网站效果后台管理一网打尽

    【标题】:“网站效果后台管理一网打尽” 在当今数字化时代,网站的后台管理系统扮演着至关重要的角色,它负责网站内容的维护、用户管理、数据处理等核心功能。本资源集合涵盖了“java模板”、“jsp网站模板”、...

    安卓应用开发范例一网打尽

    "安卓应用开发范例一网打尽"这个资源集合,正是为了帮助开发者们解决这些问题而准备的。下面,我们将深入探讨其中可能涵盖的一些关键知识点。 1. **环境搭建**:开发安卓应用首先需要安装Android Studio,它是...

    Labview 与汇川AM400 AM600 AM800 AC800 PLC 通讯 官方协议,报文读取,安全稳定 程序代开发

    常用功能一网打尽。 1.命令帧读写。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持Bool批量读写。 5.支持Q单点读写。 程序源码,命令帧文本编写,不调用dll,不安装插件,完胜OPC 等。

Global site tag (gtag.js) - Google Analytics