Java批量检测网站链接是否正常,并生成检测日志文档
1.Java代码块
(生成检测日志文档文档为md格式,最好下载typora或markdown进行查看,也可根据自己所需改成txt文档)
文件名:ceshi.java
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.io.InputStream;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;public class ceshi{public static void main(String[] args) {try {solution();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
// 检测网站链接public static List<String> test() {long start = System.currentTimeMillis();URL url;List<String> iList = new ArrayList<String>(); //测试链接集合//注意: 改为txt文档可去掉‘<br/>’ markdown换行代码iList.add("<br/>1.百度;https://www.baidu.com/");//加入测试集合中网站名称和网站地址(注意用;隔开)iList.add("<br/>2.CSDN;https://editor.csdn.net/");String sy;int natural = 0;int abnormal = 0;List<String> normal = new ArrayList<String>();//正常链接集合List<String> error = new ArrayList<String>();//错误链接集合for (int i = 0; i < iList.size(); i++) {String[] aaStrings = iList.get(i).split(";");try {url = new URL(aaStrings[1]);//测试链接是否能正常访问InputStream in = url.openStream(); //openStream 输出数据,InputStream 从流中读取数据natural++;normal.add(aaStrings[0] + "连接可用");} catch (Exception e1) {error.add(aaStrings[0]+":"+aaStrings[1]);abnormal++;url = null;}}//时间获取Date dt = new Date();String year = String.format("%tY", dt);//年String mon = String.format("%tm", dt);//月String day = String.format("%td", dt);//日String h = String.format("%tH", dt);//小时String m = String.format("%tM", dt);//分钟List<String> text = new ArrayList<String>();int all=normal.size()+error.size();//注意: 改为txt文档可去掉‘**== ==**’ markdown中加粗和高亮代码text.add("**==注意请用typora软件进行查看==**");//注意: 改为txt文档可去掉‘<br/>’text.add("<br/>共检测" +all + "个连接");//注意: 改为txt文档可去掉‘<br/>’text.add("<br/>正常连接数:" + normal.size() + "个");if (error.size()==0) { //注意: 改为txt文档可去掉‘<br/>’text.add("<br/>检测无异常链接");}else {//注意: 改为txt文档可去掉‘<br/>’text.add("<br/>异常连接数:**==" + error.size() + "个==**"); }//注意: 改为txt文档可去掉‘<br/>’text.add("<br/>正常连接检测详情:" +normal);if (error.size()==0) { //注意: 改为txt文档可去掉‘<br/>’text.add("<br/>**异常连接检测详情:==无==**");}else {//注意: 改为txt文档可去掉‘<br/>’text.add("<br/>**异常连接检测详情:==" + error+"==**"); }long end = System.currentTimeMillis();//注意: 改为txt文档可去掉‘<br/>’text.add("<br/>检测用时:" + ((end - start) / 1000) + "秒");//注意: 改为txt文档可去掉‘<br/>’text.add("<br/>------检测时间:" + year + "年" + mon + "月" + day + "日" + h + "时" + m + "分------");if (error.size()==0) { text.add("1");}else {text.add("2"); }return text;}// 逻辑处理public static void solution() throws Exception {List<String> res = new ArrayList<String>();List<String> list = test();int i = Integer.parseInt(list.get(list.size() - 1));list.remove(list.size() - 1);write2Txt(list,i);// 写到文本}public static void write2Txt(List list, int i) throws Exception {FileWriter fw = null;Date dt = new Date();String year = String.format("%tY", dt);String mon = String.format("%tm", dt);String day = String.format("%td", dt);String h = String.format("%tH", dt);String m = String.format("%tM", dt);String wen =year+mon+day;String sy =year+mon+day+h;// 新建文件String path = null;if (i == 1) {//文本生成位置以及文件类型,可根据需要更改文件类型path = "E:\\Clog\\journal\\" +wen+"\\"+ sy + ".md";} else if (i == 2) {//链接异常文本生成位置以及文件类型,可根据需要更改文件类型path = "E:\\Clog\\journal\\" +wen+"\\"+ sy + "链接异常.md";}File file = new File(path);if (!file.exists()) {file.getParentFile().mkdirs();}file.createNewFile();try {if (!file.exists()) {file.createNewFile();}fw = new FileWriter(file);BufferedWriter out = new BufferedWriter(fw);// FileOutputStream fos = new FileOutputStream(f);// OutputStreamWriter out = new OutputStreamWriter(fos, "UTF-8");out.write(list.toString());out.close();if (i == 1) {System.out.println(list.get(0));//System.out.println(list.get(1));//System.out.println(list.get(list.size()-5));//System.out.println(list.get(list.size()-3));//System.out.println(list.get(list.size()-2));//cmd窗口输出提示System.out.println("===========写入文本成功,无异常===========");} else if (i == 2) {//System.out.println(list.get(0));//System.out.println(list.get(1));//System.out.println(list.get(list.size()-5));//System.out.println(list.get(list.size()-3));//System.out.println(list.get(list.size()-2));//cmd窗口输出提示System.out.println("===========链接异常===========");}} catch (IOException e) {e.printStackTrace();}}
}
2.cmd编译代码
普通编译:javac ceshi.java (因为有中文可能会编译报错,尽量 采用下面的命令行)
带有中文内容编译命令:javac -encoding utf-8 ceshi.java
3.运行文件
运行命令:java ceshi
测试结果(因为有网站正在进行维护无法正常链接所以输出链接异常,你可以找到生成的日志查看错误链接都要哪些)