1、首先,制作list文件
import java.util.*;
import java.io.*;
import java.net.*;
public class ReadFileList{
public static void main(String[] args){
try{
String str="http://blog.csdn.net/havedream_one/article/category/2795941";
int count = 1;
while(count < 6){
System.out.println("正在提取第"+count+"个文件...");
URLConnection conn = new URL(str+"/"+count).openConnection();
conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible;MSIE 5.0;Windows XP ;DigExt)");
InputStream in = conn.getInputStream();
FileOutputStream out = new FileOutputStream("list.txt",true);
int a = 0;
while((a=in.read()) != -1){
out.write(a);
}
in.close();
out.close();
count++;
}
System.out.println("提取结束。");
}catch(IOException e){
}
}
}
这相当于将所有的博客网页文件保存起来了。
2、研究文件格式,发现
<span class="link_title"><a href="/havedream_one/article/details/42144657">
166 Fraction to Recurring Decimal
</a></span>
这样的格式包含了文章名和文章所在的地址。
用sed命令提取出来
sed -ne '/<span class="link_title">/p;/<span class="link_title">/{n;p}' list.txt
提取结果:
继续使用sed命令:
sed -ne '/<span class="link_title">/p;/<span class="link_title">/{n;p}' list.txt |sed -e 's/.*="\(.*[0-9]\).*/\1/;s/\s*//' > list2.txt
生成地址和名字的文件list2.txt
3、得到上述文件后,就可以何并文件了;
import java.io.*;
import java.util.*;
import java.net.*;
public class MergeFile{
public static void main(String[] args){
//获取参数
//0:list文件
if(args.length == 0){
System.out.println("请指定博文地址清单!!!");
}
File list = new File(args[0]);
if(!list.exists()){
System.out.println("文件不存在!");
}
int count = 0;
try{
Scanner scan = new Scanner(list);
FileOutputStream out = new FileOutputStream("MergeBlogSource.txt",true);
System.out.println("正在抽取...");
while(scan.hasNext()){
String path = "http://blog.csdn.net" + scan.nextLine();
System.out.println(path);
scan.nextLine();
URLConnection conn = new URL(path).openConnection();
conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");
InputStream is = conn.getInputStream();
int b = 0;
while((b=is.read()) != -1){
out.write(b);
}
is.close();
System.out.println("第"+ (++count) + "个抽取完成!");
}
scan.close();
out.close();
System.out.println("全部博文抽取完成!");
}catch(Exception e){
System.out.println(e);
}
}
}
~
将第三部得到的list加到命令行,java MergeFile list.txt;
其实就是将文章所在的网页都合并到一个大文件里
4、提取网页里有关文章主体
import java.io.*;
import java.util.*;
import java.net.*;
public class MergeFile{
public static void main(String[] args) throws IOException{
//获取参数
//0:list文件
if(args.length == 0){
System.out.println("请指定博文地址清单!!!");
}
File list = new File(args[0]);
if(!list.exists()){
System.out.println("文件不存在!");
}
long start = System.currentTimeMillis();
merge(list);
drawBody(list);
long end = System.currentTimeMillis();
System.out.println(end - start);
}
OK,搞定!!!
不能提取图片,等以后需要里再改进,至少现在自己的博客文章可以弄成pdf了,