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

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

使用了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; }

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

  1. 一个asp采集程序

    <% if request.QueryString="" then url="http://www.hbcz.gov.cn:7001/XZQHQueryWAR/xx ...

  2. 简单的java采集程序二

    继[简单的java采集程序],这里将完成对整个网站的号码段的采集任务. [使用预编译+批处理采集网页内容至数据库表中]          在之前我们用statement类来创建sql语句的执行对象,以 ...

  3. 简单java采集程序一

    [目标任务]通过该网站采集全国的手机号码段至数据库表中 [完成过程] 1.初涉正则表达式,学会写简单的正则表达式 2.获取单个网页内容,学会java中基本的IO流 3.将获取数据插入mysql数据库表 ...

  4. Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序

    Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...

  5. Java之第一个Java程序

    编写第一个Java程序 打开文本编辑器,输入以下代码 public class Hello { public static void main(String[] args) { System.out. ...

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

    1 /*47 [程序 47 打印星号] 2 题目:读取 7 个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*. 3 */ 4 5 /*分析 6 * 1.多次读取---for循环 7 * ...

  7. Java初学者作业——用户输入一个小数,程序分解出整数部分和小数部分。

    返回本章节 返回作业目录 需求说明: 用户输入一个小数,程序分解出整数部分和小数部分. 实现思路: 接收用户控制台输入的小数. 用强制类型转换将整数部分得到. 使用用户输入的小数减去整数部分得到小数部 ...

  8. 使用django+mysql+scrapy制作的一个小说网站

    小说网站用的程序都是千篇一律的,jieqi + guanguang,无聊时间学习python+django,也做了一个小说网站,下面说一说做这个网站一些过程, 制作这种采集站,最要紧的是要有一个好的采 ...

  9. 4年前端、2年CTO:一个非科班程序员的真实奋斗史

    1.引言   我,Scott,一家创业公司的 CTO. 从业6年却很少写文章,近一年来接触了几十个刚毕业的前端新人,也面试了100多个前端工程师和Nodejs工程师,对于前端发展的这个职业算是有些感触 ...

随机推荐

  1. 《JAVA多线程编程核心技术》 笔记:第六章:单例模式与多线程

    一.立即加载/"饿汉模式"和延迟加载/"懒汉模式" 立即加载(又称饿汉模式):在使用类的时候已经将对象创建完毕,常见实现方法是直接new实例化 延迟加载(又称懒 ...

  2. phantomjs学习之截图

    1.创建pageload.js文件: pageload.js var page = require('webpage').create(); var address = 'https://www.ba ...

  3. SQL Server常用函数汇总

    1.day(date)    用途:获取日期是所在月的几号  参数:date是一个可以解析为 time.date.smalldatetime.datetime.datetime2 或 datetime ...

  4. Grunt-Less批量编译为css

    Grunt批量编译less module.exports = function (grunt) { grunt.initConfig({ less: { main: { expand: true, s ...

  5. PHP的几种排序方法

    <?php /** * PHP最常用的四个排序方法及二种查找方法 * 下面的排序方法全部都通过测试 * auther : soulence * date : 2015/06/20 */ //PH ...

  6. Django-1版本的路由层、Django的视图层和模板层

    一.Django-1版本的路由层(URLconf) URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:我们就是以这种方式告诉Dja ...

  7. 前端 CSS 边框

    border 边框 solid 实体的 red 边框什么颜色 <!DOCTYPE html> <html lang="en"> <head> & ...

  8. java 自制Tomcat Andorid IOS 端 证书

    java 自制证书 最近做项目用到Https 需要自制各种证书,Tomcat 用的JKS 格式, Andorid 端使用 BKS 格式, IOS 端使用 P12格式正式, 以及各种证书格式之间的转换. ...

  9. 数据库、Java与Hibernate数据类型对照

    数据类型对照表: 标准SQL数据类型 Java数据类型 Hibernate数据类型 TINYINT byte.java.lang.Byte byte SMALLINT short.java.lang. ...

  10. Hadoop源码如何查看

    如何查看hadoop源码 1解压hadoop安装压缩文件成为文件夹,再进入解压后的文件夹下的src文件夹,选中core,hdfs,mapred三个文件夹