您的位置:首页 > 编程语言 > Java开发

java实现网页爬虫的一个小例子

2013-09-23 00:02 435 查看
网络爬虫,从网上爬取信息,保存在本地。

通过自身的实践,觉得重点就这几个方面

一、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"

可能会因为编码问题出现错误,这个我正在解决中,明天接着聊稍微复杂些的内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: