使用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();
}
 

Java——获取网页内容并在本地生成HTML文件的更多相关文章

  1. java获取ubuntu某个目录下的所有文件信息

    java获取ubuntu某个目录下的所有文件信息 public List<VCFile> getAllFiles(String basicDirName) { List<VCFile ...

  2. Java获取路径方法&相对路径读取xml文件方法

    (1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...

  3. silverlight 从数据库获取到数据,动态生成XMLWEN文件,并获取文件进行操作

    // Silverlight中的独立存储是其内部的可信任的可访问文件空间,在这里你可以使用Silverlight随意的创建.读取.写入.删除目录和文件,它有一些类似于Cookie,但是它可以在客户端保 ...

  4. Java获取后台数据,动态生成多行多列复选框

    本例目标: 获取后台数据集合,将集合的某个字段,比如:姓名,以复选框形式显示在HTML页面 应用场景: 获取数据库的人员姓名,将其显示在页面,供多项选择 效果如下: 一.后台 查询数据库,返回List ...

  5. 关于java获取网页内容

    最近项目需求,做一些新闻站点的爬取工作.1.简单的jsoup爬取,静态页面形式: String url="a.atimo.cn";//静态页面链接地址Document doc = ...

  6. java编程如何实现从本地里读取文件1,写入到本地另一个文件2里(多种场景)

    不多说,直接上干货! 有时候,我们需要用到这样的一个场景. ReadLocalFile1WriteLocalFile2.java (以下是相当于复制,读取文件1里的全部内容,并写入到文件2里) pac ...

  7. java实现点击查询数据生成excel文件并下载

    须先导入关键maven包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi& ...

  8. Android NDK 初探,生成so文件以及调用so文件方法

    因为最近业务上涉及安全的问题 然后有一些加密解密的方法和key的存储问题 本来想存储到手机里面,但是网上说一般敏感信息不要存储到手机Sdcard上 而且我这个如果从网络建立通信获取的话,又太耗时,所以 ...

  9. 如何打包/运行jar包,及生成exe文件

    关于如何打包/运行jar包,以及生成exe文件.之前各种查询.博客,终于搞明白究竟是咋回事.记得还做过笔记的.今天要打包生成exe用的时候,居然忘了咋怎来着.去查看之前的笔记,死活没找到(好像被删掉了 ...

随机推荐

  1. English--不定式

    English|不定式 不定式短语在英语的写作中,比较常见,所以需要多留意.英语的学习需要多加阅读,在阅读中,看句子,学语法. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的 ...

  2. 2019-07-31 Jquery

    Jquery是什么? jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是“ ...

  3. C++ GDI图形设备接口

    一.概念 1. GDI:(Graphics Device Interfase)图形设备接口,是一个应用程序与输出设备之间的中介. 一方面,GDI向应用程序提供一个与设备无关的编程环境,另一方面,它又以 ...

  4. JavaScript数据类型和语法

    第一章 类型 1.2 内置类型 使用 typeof 检测对象类型并不是非常安全的行为: // 安全的 typeof undefined // 'undefined' typeof true // 'b ...

  5. Android中自定义环形图2

    如图: 自定义属性,在values文件夹下创建 attrs.xml <?xml version="1.0" encoding="utf-8"?> & ...

  6. docker安装常见应用

    1.emqx #!/bin/bash docker stop emqttd-docker-v2.3.11 docker rm emqttd-docker-v2.3.11 docker run -tid ...

  7. aws centos系统磁盘扩容

    growpart /dev/xvda 1  展开修改后的分区(注意是:空格 1,而非打错了) # ext3/4 1.resize2fs /dev/xvda1 将分区调整为新的卷容量 # xfs分区 2 ...

  8. zabbix--自动注册

    Active agent自动注册 agent 自动注册就是实现一台新的服务器配置好 agent 端,自动在服务器端注册,无需在服务器上进行手动配置便可以直接启动对新的host的监控. 参考官档:htt ...

  9. linux 管道,输出重定向,后端执行

    1. | (管道) $time|data:"Y-m-d"将前部的输出,作为后部的输入:配合管道使用的命令,典型的就是grep,more find --help | grep cne ...

  10. redis windows下载地址

    https://github.com/MicrosoftArchive/redis/tags