网络爬虫,从网上爬取信息,保存在本地。
通过自身的实践,觉得重点就这几个方面
一、java文件读写
二、利用jsoup解析html代码信息
三、新文件覆盖旧文件
首先从最简单的抓取百度首页www.baidu.com入手吧
package crawler;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class maincrawler {
private static final String PATH = "/data";
private static final String WEBNAME = "baidu.html";
public static void main(String[] args) {
URL url = null;
URLConnection conn = null;
InputStream is = null;
// 创建url连接并建立输入字节流
try {
url = new URL("http://www.baidu.com");
conn = url.openConnection();
is = conn.getInputStream();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 保存文件的到本地文件夹(/data/)
try {
saveFile(PATH, WEBNAME, is);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static int saveFile(String path, String webName, InputStream is) throws Exception{
BufferedWriter writer = null;
BufferedReader reader = null;
try {
File f = new File(path);
if (!f.exists()) {
f.mkdirs();
}
File file = new File(path + File.separator + webName);
if (!file.exists()) {
file.createNewFile();
} else {
return 0;
}
FileWriter fw=new FileWriter(file);
writer=new BufferedWriter(fw);
reader=new BufferedReader(new InputStreamReader(is,"UTF-8"));
String inputLine=null;
while((inputLine=reader.readLine())!=null){
writer.write(inputLine);
writer.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally{
if(is!=null){
is.close();
}
if(writer!=null){
writer.close();
}
if(reader!=null){
reader.close();
}
}
return 1;
}
}
这段代码简单的运行就会抓取出百度的首页面,查看文件在你坐在目录盘的“/data/baidu.html”.例如如果你的java文件在D盘,那么文件应该在"D:/data/baidu.html"
可能会因为编码问题出现错误,这个我正在解决中,明天接着聊稍微复杂些的内容。