功能实现 :爬取小说所有章节(url+suffix)
待实现 :生成word文档
已实现 :生成word文档
package com.haina.test;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Chapter {
//定义一个静态方法
//通过小说正文url 来获取该链接的正文和章节标题
public static void getContent(String url) throws IOException{
Document doc = Jsoup.connect(url).get();
Element body = doc.body();
String title = body.getElementsByTag("h1").text();
System.out.println(title);
String content = body.getElementById("content").text();
System.out.println(content);
}
public static void main(String[] args) throws IOException {
//Jsoup--解析器
Document doc = Jsoup.connect("http://www.biquge.info/60_60435/").get();
Element body = doc.body();
// String chapter = body.getElementById("list").text();
// System.out.println(chapter);
Elements ddList = body.getElementsByTag("dd");
//遍历这个集合 ele 是每一个元素
int cnt = 0;
for(Element ele : ddList){
cnt++;
// String title = ele.getElementsByTag("a").text();
// System.out.println(title);
String suffix = ele.getElementsByTag("a").attr("href");
String url = "http://www.biquge.info/60_60435/"+suffix;
getContent(url);
}
System.out.println("total = "+cnt);
}
}
主要使用:
Jsoup解析器
getElementByTag.get()等
2.**********************************
文件写入操作
package com.haina.test;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class FileWriteRead {
public static void main(String[] args) throws IOException {
File f = new File("java_file.txt");
// f.createNewFile();
// io的装饰器模式,对file对象进行装饰,给他增加新的方法
FileReader fr = new FileReader(f);
int ch;// 接收文件内字符
while ((ch = fr.read()) != -1) {
System.out.println((char) ch);
}
fr.close();
// ----------------------------------写入-----------------------------
FileWriter fw = new FileWriter(f, true);// true -- 保留原来的,追加新的
// FileWriter类对File进行装饰,给他提供文件写入的功能
PrintWriter pw = new PrintWriter(fw);
pw.println("java");
pw.println("test");
pw.flush();
pw.close();
}
}
- 完整版
//代码格式化 ctr+shift+f
package com.haina.test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Chapter {
// 静态属性,旨在类加载时初始化一次,静态属性定义在类的里边,方法的外边
private static File file = new File("book.txt");// new 是在初始化
private static FileWriter fw;// 直接new会抛异常,所以直接写代码块
private static PrintWriter pw;
// 代码块
static {
try {
fw = new FileWriter(file);
pw = new PrintWriter(fw);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 定义一个静态方法
// 通过小说正文url 来获取该链接的正文和章节标题
public static void getContent(String url) throws IOException {
Document doc = Jsoup.connect(url).get();
Element body = doc.body();
String title = body.getElementsByTag("h1").text();
System.out.println(title);
String content = body.getElementById("content").text();
System.out.println(content);
pw.println(title);
pw.println(content);
pw.flush();//刷新缓冲流s
}
public static void main(String[] args) throws IOException {
// Jsoup--解析器
Document doc = Jsoup.connect("http://www.biquge.info/60_60435/").get();
Element body = doc.body();
// String chapter = body.getElementById("list").text();
// System.out.println(chapter);
Elements ddList = body.getElementsByTag("dd");
// 遍历这个集合 ele 是每一个元素
int cnt = 0;
for (Element ele : ddList) {
cnt++;
// String title = ele.getElementsByTag("a").text();
// System.out.println(title);
String suffix = ele.getElementsByTag("a").attr("href");
String url = "http://www.biquge.info/60_60435/" + suffix;
getContent(url);
}
System.out.println("total = " + cnt);
}
}