原文地址: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组件、还是功能插件,我们都为您一网打尽。我们深知每位开发者对项目的独特需求,因此我们的资源包不仅数量丰富,而且质量上乘,确保满足您的各种开发...
本篇将深入探讨“运动荟小程序”的核心概念、功能特性以及实际应用,帮助用户更好地理解和利用这款小程序。 首先,我们要了解什么是小程序。小程序是微信、支付宝等平台推出的一种无需下载安装即可使用的应用程序,...
LabVIEW网口TCP通讯:欧姆龙OMRON PLC一网打尽,源码开放,多类型数据批量读写,替代OPC插件,原创视频分享,LabVIEW网口TCP通讯:欧姆龙OMRON PLC一网打尽,源码开放,多类型数据批量读写,替代OPC插件,原创视频...
常用功能一网打尽。 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通信实战指南:官方协议解析、报文读写、功能一网打尽,源码创作,非诚勿扰,LabVIEW与汇川PLC通信实战指南:协议解读、报文稳定传输、全方位功能实现(附源码),LabVIEW与汇川H5U PLC通信 官方协议...
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串口通信详解:源码开放,多种数据格式批量读写,无需插件超越OPC,Labview与基恩士PLC串口通讯通信常用功能一网打尽。 1.源码开放。 2.支持 I16 I32 Float 批量读写。 3.支持字符串读写。 4.支持...
Labview与汇川PLC通讯:官方协议下的报文读取与配置辅助,安全稳定的命令帧读写程序源码,Labview与汇川PLC通讯:官方协议下的报文读取与配置辅助,安全稳定的命令帧读写程序源码,Labview 与汇川AM400 AM600 AM800 AC...
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. 后接 ...