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

Java——获取网页内容并在本地生成HTML文件

2016-03-24 11:04 726 查看
使用java.net包下的URL类,可以将一个网页(链接)封装成一个URL对象。

URL对象有一个
openStream()
方法,使用该方法可以获取该网页的输入流,我们可以通过读取输入流的方式获得网页的内容,并通过输出流写入HTML文件中。

方式一:

使用此方法需要指定输入流和输出流的字符编码,否则可能会出现乱码

步骤:

1. 通过URL对象的
openStream()
方法获得网页的字节输入流

2. 将字节输入流转换成字符输入流

3. 为字符输入流加缓冲区

4. 定义一个字节输出流

5. 将字节输出流转换成字符输出流

6. 将读取到的数据写入文件

7. 关闭流

public void way_1() throws Exception {
InputStream inputStream;//接收字节输入流
InputStreamReader inputStreamReader;//将字节输入流转换成字符输入流
BufferedReader bufferedReader;//为字符输入流加缓冲
FileOutputStream fileOutputStream;//字节输出流
OutputStreamWriter outputStreamWriter;//将字节输出流转换成字符输出流

URL wangyi = new URL("http://www.163.com/");
inputStream = wangyi.openStream();
inputStreamReader = new InputStreamReader(inputStream, "gb2312");
bufferedReader = new BufferedReader(inputStreamReader);
String s;
File dest = new File("src/wangyi.html");
fileOutputStream = new FileOutputStream(dest);
outputStreamWriter = new OutputStreamWriter(fileOutputStream, "gb2312");
while ((s = bufferedReader.readLine()) != null) {
outputStreamWriter.write(s);
}

outputStreamWriter.close();
fileOutputStream.close();
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
}


方式二:

使用此方法不需要指定输入流和输出流的字符编码(因为是通过字节的方式)

步骤:

1. 通过URL对象的
openStream()
方法获得网页的字节输入流

2. 为字节输入流加缓冲

3. 创建字节输出流对象

4. 为字节输出流加缓冲

5. 读取数据,并写入HTML文件

6. 关闭流

public void way_2() throws Exception{
File dest = new File("src/wangyi2.html");
InputStream is;//接收字节输入流
FileOutputStream fos = new FileOutputStream(dest);//字节输出流

URL wangyi = new URL("http://www.163.com/");
is = wangyi.openStream();

BufferedInputStream bis = new BufferedInputStream(is);//为字节输入流加缓冲
BufferedOutputStream bos = new BufferedOutputStream(fos);//为字节输出流加缓冲

int length;

byte[] bytes = new byte[1024*20];
while((length = bis.read(bytes, 0, bytes.length)) != -1){
fos.write(bytes, 0, length);
}

bos.close();
fos.close();
bis.close();
is.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  url java