Java实现的一个小说采集程序

被标题吸引进来的不要骂我。

只是一个简单的实现,随手写了来下载一部喜欢的小说的。示例中的小说只是示例,不是我的菜。

使用了jsoup。挺好用的一个工具。

有需要的话,参考下自己改吧。挺简单的,是吧。

代码如下:

package com.zhyea.doggie;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class Doggie {

    public static void main(String[] args){
        try{
            File txtFile = new File("D:/无限崩坏.txt");
            createTxtDoc(txtFile);
            addContent(txtFile);
        }catch(Exception e){
            e.printStackTrace();
        }

    }

    /**
     * 向小说文件中添加内容
     * @param txtFile
     *             小说文件
     * @throws IOException
     * @throws InterruptedException
     */
    private static void addContent(File txtFile) throws IOException, InterruptedException{
        appendTxt(txtFile, getBookInfo("无限崩坏", "啪啪啪狂魔"));
        String url = "http://www.83kxs.com/View/12/12653/{pattern}.html";
        for(int i=5850686; i<=5945501; i++){
            try{
                String tmp = url.replace("{pattern}", i+"");
                appendTxt(txtFile, getPageContent(tmp));
            }catch(Exception e){
                e.printStackTrace();
                continue;
            }
        }
    }

    /**
     * 设置书名和作者
     * @param bookName
     *                 书名
     * @param author
     *                 作者
     * @return
     */
    private static String getBookInfo(String bookName, String author){
        return COMMON.replace("{book}", bookName).replace("{author}", author);
    }    

    /**
     * 读取页面内容
     * @param url
     *            访问路径
     * @return
     * @throws IOException
     */
    private static String getPageContent(String url) throws IOException{
        String rtn = null;

        Document doc = Jsoup.connect(url).get();
        Elements content = doc.select(".text p");
        Elements title = doc.select("#title");

        System.out.println(title.text());

        content.select("font").remove();
        content.select("script").remove();
        content.select("ins").remove();
        content.select("a").remove();

        rtn = title.text() + NEWLINE
            + content.html().replaceAll("<p>", "")
                            .replaceAll("</p>", "")
                            .replaceAll("\\<!--(.+)--\\>", "")
                            .replaceAll("&nbsp;", "")
                            .replaceAll("<br>", NEWLINE)
            + NEWLINE;

        return rtn;
    }

    /**
     * 创建新的txt文件
     * @param fullName
     *             文件全名
     * @return
     * @throws Exception
     */
    private static boolean createTxtDoc(File txtFile) throws Exception{
        try{
            return txtFile.createNewFile();
        }catch(Exception e){
            throw e;
        }
    }

    /**
     * 向txt文件中追加内容
     * @param txtFile
     *             要操作的txt文件
     * @param content
     *             要追加的内容
     * @throws IOException
     */
    private static void appendTxt(File txtFile, String content) throws IOException{
        FileWriter writer = null;
        try{
            writer = new FileWriter(txtFile, true);
            writer.append(content);
        }finally{
            if(null!=writer)writer.close();
        }
    }

    /**
     * 换行符
     */
    static final String NEWLINE = System.getProperty("line.separator");

    /**
     * 书前的通用信息
     */
    static String COMMON = "------------------------------------------------------------------" + NEWLINE
                                + "---------------  书名:{book}" + NEWLINE
                                + "---------------  作者:{author}" + NEWLINE
                                + "---------------  zhyea.com" + NEWLINE
                                + "------------------------------------------------------------------" + NEWLINE;

}
时间: 2024-10-10 12:25:58

Java实现的一个小说采集程序的相关文章

Java实现的一个词频统计程序

import java.util.HashMap; import java.util.Iterator; public class WordCount { public static void main(String[] args) { String[] text=new String[]{"the weather is good ","today is good","today has good weather","good weat

一个asp采集程序

<% if request.QueryString="" then url="http://www.hbcz.gov.cn:7001/XZQHQueryWAR/xxcx/loca_zjxx1.jsp?page=1&table=cz_bzhqincjs&qhstr=D420684&class_fovo=&class_ssort=&D3=&D4=&T1=&T2=" else url="htt

编一个多用户登陆程序

package com.java.Day20161118;//编一个多用户登陆程序 import java.util.*;public class Login {private static String [] names ={"user", "admin" , "manager"} ;private static String [] password = {"123123","asdfg","1

52 java编程思想——创建窗口和程序片 程序片限制

52.java编程思想--创建窗口和程序片 程序片限制 出于安全缘故,程序片十分受到限制,并且有很多的事我们都不能做.您一般会问:程序片看起来能做什么,传闻它又能做什么:扩展浏览器中WEB 页的功能.自从作为一个网上冲浪者,我们从未真正想了解是否一个WEB 页来自友好的或者不友好的站点,我们想要一些可以安全地行动的代码.所以我们可能会注意到大量的限制: (1) 一个程序片不能接触到本地的磁盘.这意味着不能在本地磁盘上写和读,我们不想一个程序片通过WEB页面阅读和传送重要的信息.写是被禁止的,当然

简单的java采集程序二

继[简单的java采集程序],这里将完成对整个网站的号码段的采集任务. [使用预编译+批处理采集网页内容至数据库表中]          在之前我们用statement类来创建sql语句的执行对象,以实现插入字段到数据库的操作,但由于插入的数据量较大,如果继续用statement操作话,会很耗时间,我们用其子类PreparedStatement来进行操作.      PreparedStatement 可以实现sql语句的预编译,我们只需要通过其setString()方法传参即可,这样不仅效率提

java web程序 上机考试做一个登陆注册程序

大二期末 java web.用到数据库,jdbc.myeclipse实现用户的注册,登陆 并且不能出现500错误,用户不能重复注册.当用户任意点击时也不能出现500错误! 这里.我只写注册成功的页面.这个不让用户重复注册 当时老师对我各种扣分.可后来.我问他的时候,他说不出来.我不是那个第一个提交作业的学生,可我的分数却比他低,我的功能比他多一个好吧 无所谓啊  谁叫我那么背时,再也不想问了.特别烦躁了 registerOk.jsp <body> <% String name=reque

80. 投奔怒海——一个Domino老程序员眼里的Java开发

这是一个以键盘鼠标为谋生工具已十多年的人初次进行专门的Java开发的体验和感受,对于Java程序员,这些也许早就习以为常,那就把这当成从一个来自不同世界的新人眼里看看他们自己的工作:对于我的Domino同行,这些体验或许将来有更多共鸣的可能. 在加入到这个Java产品开发团队之前,我的Java开发经验如下:十几年前跟着一本Java入门书做练习写的几个Applet,Domino项目开发中写的几个读写数据库和外部邮件的代理,XPages开发中的少量Java Beans和一个流程库.除此之外就只剩下对

java例题_47 读取 7 个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*

1 /*47 [程序 47 打印星号] 2 题目:读取 7 个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*. 3 */ 4 5 /*分析 6 * 1.多次读取---for循环 7 * 2.输出多个不确定数量的*-----for循环 8 * ====>两层for循环 9 * */ 10 11 package homework; 12 13 import java.util.Scanner; 14 15 public class _47 { 16 17 public static v

一个初中生到程序员的辛酸经历

一个初中生到程序员的辛酸经历 转自木板 前言:我将写下一个穷苦家庭的农村孩子的经历.我念书不多,文笔不好,基本上是流水式的叙述,大家多多见谅.如果你现在年轻或迷惘,那你看下这篇文章或许有帮助.如果你想了解社会的底层,也可以看看本文.在这篇文章里我会写一些我对人生的看法,希望可以给各位参考参考. 我今年二十八岁,个子不高,长得还算端正.在学校受的教育不高,就读到初中二年级下学期.   我干过很多行业,学过厨师,学过装修,做过酒店服务员,送过报纸.可以说在在社会底层的经历十分的丰富.后来参加自考拿了