public class TianBo_Test2_More_MuLu2 implements Runnable{
private static String record_file="E:\\\\java_paChong\\\\biQuGe_XiaoShuo";
private static String record_file_zhangShu_url="";
FileWriter fw = null;
String url="https://www.ctgf.net";
String fileName=""; //小说分类
String fileName2="";//小说名
String fileName_ZhangShu=""; //小说第几章
String fileName_ZhangShu_NeiRong=""; //小说内容
@Test
public void jsoup( ) throws Exception {
/** 优势:由于Document是java中自带的解析器,兼容性强
缺点:由于Document是一次性加载文档信息,如果文档太大,加载耗时长,不太适用**/
//解析url地址, 笔趣阁,玄幻魔法
Document doc___0 = Jsoup.parse(new URL(url),10000); // 解析网页 得到文档对象
// Document doc___3 = Jsoup.parse(new URL(url+e___2.attr("href")).openStream(), "GBK", url+e___2.attr("href"));
//使用标签选择器
// String title = document.getElementsByTag("title").first().text();
// System.out.println("-------title------"+title);
/****************创建----首页-----目录*******************/
/***使用 属性,属性值 -----》 获取值***/
//
玄幻魔法 -----属性,属性值
// String title3 = document.getElementsByAttributeValue("href","/magic/").first().text();
System.out.println("-------title3------"+title3);
// System.out.println( "target-_blank" );
// 根据属性名和属性值来查询DOM
//通过选择器查找所有博客链接DOM
Elements targetElements=doc___0.select("#wrapper .nav a");// id选择器下的--》class选择器---》a标签
for (Element e___0:targetElements){
fileName=e___0.text(); // //小说分类
// System.out.println("------------"+fileName);
if("首页".equals(fileName) || "榜单".equals(fileName)
|| "全部小说".equals(fileName) || "搜索".equals(fileName)
|| "书架".equals(fileName) ) {
//跳出循环,循环下一个
continue;
}
/*创建文件夹*/ /****************创建目录*******************/
// System.out.println("------2222222------"+fileName);
File file=new File(record_file+ File.separator+ File.separator+fileName);
if(!file.exists()){//如果文件夹不存在
file.mkdir();//创建文件夹
}
/* 给文件夹写入数据,*/
// System.out.println("---获取-----href--的值--:"+e.attr("href"));
// System.out.println("---url--:"+url+e___0.attr("href"));
Document doc___1 = Jsoup.parse(new URL(url+e___0.attr("href")),10000); // 解析网页 得到文档对象
Elements Elements_log=doc___1.select("#newscontent .l ul li .s2 a");// id选择器下的--》class选择器---》a标签
for (Element e___1:Elements_log){
fileName2=""; //小说名
fileName2=e___1.text().toString();
// System.out.println("--------fileName2-----小说名-----"+fileName2);
System.out.println("----111----"+record_file+ File.separator + File.separator
+fileName + File.separator + File.separator
+fileName2);
File file2=new File(record_file+ File.separator+fileName+File.separator+fileName2);
if(!file2.exists()){//如果文件夹不存在
file2.mkdir();//创建文件夹
}
Document doc___2 = Jsoup.parse(new URL(e___1.attr("href")), 10000);
Elements Elements_DiJiZhang=doc___2.select("#list dl dd a");// id选择器下的--》class选择器---》a标签
for (Element e___2:Elements_DiJiZhang){
fileName_ZhangShu=""; //小说第几章
fileName_ZhangShu=e___2.text().toString().replace("?", "?");
record_file_zhangShu_url="";
record_file_zhangShu_url=(record_file + File.separator + File.separator
+fileName+File.separator + File.separator +fileName2
+File.separator + File.separator +fileName_ZhangShu+".txt").toString();//.replace("\\","/")
File file3=new File(record_file_zhangShu_url);
///如果这张内容不存在,就创建文件夹,并写入内容 ,
///-------否则,就不创建跳出循环,循环下一个
if(!file3.exists()) {
file3.createNewFile();
System.out.println("-------fileName_ZhangShu-----------"+fileName_ZhangShu);
//添加--小说--张数--标题
fw = new FileWriter(record_file_zhangShu_url, true);
BufferedWriter buWriter = new BufferedWriter(fw);
buWriter.write(fileName_ZhangShu);
buWriter.newLine();//换行
Document doc___3 = Jsoup.parse(new URL(url+e___2.attr("href")), 10000);
Elements Elements_DiJiZhang_NeiRong=doc___3.select("#content");// id选择器下的--》class选择器---》a标签
for (Element e___3:Elements_DiJiZhang_NeiRong){
// buWriter.write("\r\n\r\n"); //换行
// buWriter.newLine();//换行
fileName_ZhangShu_NeiRong=""; //小说内容
//换行,一个 ‘,’换一次行
fileName_ZhangShu_NeiRong= e___3.text().toString().replace("。”", "。”"+"\r\n");
// fileName_ZhangShu_NeiRong= e___3.text().toString();
// System.out.println("-----------fileName_ZhangShu_NeiRong------------"+fileName_ZhangShu_NeiRong);
buWriter.write(fileName_ZhangShu_NeiRong);
}
buWriter.close();
fw.close();
}else { //如果这张内容存在,就跳出循环,循环下一个
continue;
}
}
}
}
}
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
}