<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    京山游俠

    專注技術(shù),拒絕扯淡
    posts - 50, comments - 868, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    各位朋友,等人等車等吃飯的時候可以干些什么呢?掏出手機(jī)看電子書是不錯的選擇。昨天,我寫了一個小程序,基本上可以把新浪讀書頻道排行榜一網(wǎng)打盡。

    程序只用到了Java中的這樣一些知識:
    1、URL類,用來連接新浪網(wǎng)
    2、BufferedReader類,用來讀取數(shù)據(jù)
    3、Pattern類和Matcher類,使用正則表達(dá)式來提取小說的正文

    完整的代碼如下:
    /*
    ?*?To?change?this?template,?choose?Tools?|?Templates
    ?*?and?open?the?template?in?the?editor.
    ?
    */
    package?ebookdownloaderforsinanzt;

    import?java.io.BufferedReader;
    import?java.io.InputStreamReader;
    import?java.net.URL;
    import?java.util.regex.Matcher;
    import?java.util.regex.Pattern;

    /**
    ?*
    ?*?
    @author?海邊沫沫
    ?
    */
    public?class?Main?{

    ????
    /**
    ?????*?
    @param?args?the?command?line?arguments
    ?????
    */
    ????
    public?static?void?main(String[]?args)?{
    ????????
    int?upbound?=?Integer.parseInt(args[1]);
    ????????
    for(int?i?=?1;?i<=upbound?;?i++){
    ????????????System.out.println(getParagraph(
    "http://book.sina.com.cn/nzt/lit/"+args[0]+"/",i));
    ????????????System.out.println();
    ????????}
    ????}

    ????
    private?static?String?getParagraph(String?url,int?index)?{
    ????????
    int?status?=?0;
    ????????String?paragraph?
    =?"";
    ????????
    try?{
    ????????????URL?ebook?
    =?new?URL(url?+?index?+?".shtml");
    ????????????BufferedReader?reader?
    =?new?BufferedReader(new?InputStreamReader(ebook.openStream()));
    ????????????String?line;
    ????????????
    while?((line?=?reader.readLine())?!=?null)?{
    ????????????????
    if?(status?==?0)?{
    ????????????????????
    //還沒有碰到標(biāo)題
    ????????????????????Pattern?pattern?=?Pattern.compile("(.*)<tr><td?class=title14?align=center><font?color=red><B>(.*)</B></font></td></tr>(.*)");
    ????????????????????Matcher?matcher?
    =?pattern.matcher(line);
    ????????????????????
    if?(matcher.matches())?{
    ????????????????????????paragraph?
    +=?matcher.group(2);
    ????????????????????????paragraph?
    +=?"\n\n";
    ????????????????????????status?
    =?1;
    ????????????????????}
    ????????????????}
    ????????????????
    if?(status?==?1)?{
    ????????????????????
    //還沒有碰到文章的開頭
    ????????????????????Pattern?pattern?=?Pattern.compile("(.*)<font?id=\"zoom\"?class=f14><p>(.*)<!--NEWSZW_HZH_BEGIN-->(.*)");
    ????????????????????Matcher?matcher?
    =?pattern.matcher(line);
    ????????????????????
    if?(matcher.matches())?{
    ????????????????????????paragraph?
    +=?matcher.group(2);
    ????????????????????????status?
    =?2;?//碰到了正文中的畫中畫
    ????????????????????}
    ????????????????}
    ????????????????
    if?(status?==?2)?{
    ????????????????????Pattern?pattern?
    =?Pattern.compile("(.*)<!--NEWSZW_HZH_END-->(.*)</p>");
    ????????????????????Matcher?matcher?
    =?pattern.matcher(line);
    ????????????????????
    if?(matcher.matches())?{
    ????????????????????????paragraph?
    +=?matcher.group(2);
    ????????????????????????status?
    =?3;
    ????????????????????}
    ????????????????}
    ????????????}

    ????????????
    //替換掉</p><p>
    ????????????return?paragraph.replaceAll("</p><p>",?"\n\n");
    ????????}?
    catch?(Exception?e)?{
    ????????????System.out.println(e.toString());
    ????????????
    return?null;
    ????????}
    ????}
    }

    讓大家看看截圖:

    新浪讀書頻道排行榜:
    01.PNG

    我寫的小程序的運行畫面:
    02.PNG

    下載下來的成果:
    03.PNG

    最后讓大家看看我的IDE,我用上了最新版的NetBeans,還把它的主題改成了蘋果樣子:
    04.PNG

    最后要說的是,新浪讀書頻道上的書,根據(jù)URL不同,其源代碼的結(jié)構(gòu)也不同,所以要用不同的正則表達(dá)式來提取。上面的程序只能提取http://book.sina.com.cn/nzt/lit/小說名/序號.shtml這樣的電子書。但是對程序做一點修改是很簡單的。

    評論

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡  回復(fù)  更多評論   

    2008-11-07 19:09 by jestane
    不錯,樓主是個喜歡動手的人啊,學(xué)習(xí)了

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡  回復(fù)  更多評論   

    2008-11-07 20:49 by walk
    不錯啊 偶喜歡

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡  回復(fù)  更多評論   

    2008-11-07 22:29 by 礦礦
    相當(dāng)牛逼!叼 學(xué)習(xí)!!!

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡  回復(fù)  更多評論   

    2008-11-07 23:06 by 黑蝙蝠
    頂一個再說 呵呵

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡[未登錄]  回復(fù)  更多評論   

    2008-11-08 19:46 by 的的
    不錯,學(xué)到了,做程序就是要勤動手...

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡[未登錄]  回復(fù)  更多評論   

    2008-11-08 20:19 by 海邊沫沫
    還有一點要注意,對于有些系統(tǒng),需要把程序中的"\n\n"換成"\r\n\r\n"才能夠表現(xiàn)出完美的換行。比如Windows自帶的記事本和我的一個MP4需要"\r\n",而我的手機(jī)則只要"\n"。

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡  回復(fù)  更多評論   

    2008-11-09 08:53 by ITGXG

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡  回復(fù)  更多評論   

    2008-11-12 13:53 by wavefly
    太彪悍了

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡  回復(fù)  更多評論   

    2008-11-16 18:00 by tianming
    那個名字就是拼音了,
    請問那個序號怎么知道呢

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡  回復(fù)  更多評論   

    2009-05-27 19:35 by http://www.bcstudy.cn
    我也寫了一個,不過是做成電子書CHM的。

    # re: 寫個小程序?qū)⑿吕俗x書頻道一網(wǎng)打盡  回復(fù)  更多評論   

    2011-01-27 08:51 by jobs
    小說名和序號怎么得到呢!
    主站蜘蛛池模板: 中文字幕免费人成乱码中国| 亚洲国产精华液2020| 久久久国产精品无码免费专区| 亚洲国产成人久久综合一区77| 亚洲欧美乱色情图片| 精品国产免费一区二区| 亚洲欧美日韩国产精品一区| 永久在线毛片免费观看| 亚洲成av人片天堂网无码】| 国产男女猛烈无遮档免费视频网站 | 国产v亚洲v天堂无码网站| 中文字幕无码免费久久9一区9 | 免费鲁丝片一级观看| 国产亚洲欧美日韩亚洲中文色| 国产a不卡片精品免费观看| 亚洲国产成人AV网站| 亚洲情侣偷拍精品| 美女黄网站人色视频免费国产 | 黄网站在线播放视频免费观看 | 国产高清对白在线观看免费91| 最近中文字幕完整免费视频ww| 亚洲欧洲在线观看| 插B内射18免费视频| 国产精品手机在线亚洲| 久久亚洲av无码精品浪潮| 久久这里只精品99re免费| 精品久久亚洲中文无码| 四虎永久免费地址在线网站| 久久一区二区免费播放| 337p日本欧洲亚洲大胆色噜噜 | 成年女人视频网站免费m| 亚洲AV无码AV吞精久久| 亚洲熟妇中文字幕五十中出| 91精品免费观看| 国产精品亚洲一区二区三区| 国产∨亚洲V天堂无码久久久| 美女被免费喷白浆视频| 国产精品偷伦视频免费观看了| 亚洲综合激情另类小说区| 免费人成视网站在线观看不卡| 全免费a级毛片免费看|