<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
    小說名和序號怎么得到呢!
    主站蜘蛛池模板: 老司机午夜在线视频免费观| 四虎1515hh永久久免费| 亚洲欧洲国产综合AV无码久久| 久久青青草原亚洲av无码| 中文字幕无码不卡免费视频| 久久国产免费观看精品| 国产精品日本亚洲777| 亚洲人成免费电影| 亚洲ⅴ国产v天堂a无码二区| 免费少妇a级毛片| 成年男女免费视频网站| 亚洲视频在线观看免费| 中文字幕在线成人免费看| 美国毛片亚洲社区在线观看| 亚洲乱码一二三四区麻豆| 亚洲无线电影官网| 亚洲午夜久久久久久久久电影网 | 亚洲国产精品自在拍在线播放| 免费无码又爽又刺激聊天APP| 亚洲视频在线免费播放| 免费在线中文日本| 免费观看一区二区三区| 黄色短视频免费看| 黄色毛片免费观看| 亚洲av无码专区国产不乱码 | 色影音免费色资源| 男女污污污超污视频免费在线看 | 久久精品国产亚洲av麻豆小说| 亚洲精品老司机在线观看| 黄网址在线永久免费观看 | 91精品国产亚洲爽啪在线影院 | 亚洲三级电影网址| 亚洲精品无码久久一线| 亚洲第一区精品日韩在线播放| 久久久久亚洲精品天堂| 在线观看亚洲天天一三视| 久久99亚洲综合精品首页| 国产精品免费综合一区视频| 免费看香港一级毛片| 大香人蕉免费视频75| 在线观看免费国产视频|