使用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. APS.NET MVC + EF (07)---表单和HTML辅助方法

    在ASP.NET MVC中,可以借助HtmlHelper 对象来输出页面内容,提高开发效率.下面,我们将介绍一些常用的辅助方法. 7.1 HTML辅助方法 BeginForm 该辅助方法主要用来产生& ...

  2. APS.NET MVC + EF (05)---控制器

    Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务端的交互,并且负责协调Model与View之间数据传递,是ASP.NET MVC框架核心.Controller为ASP. ...

  3. 树莓派Raspbian系统密码

    树莓派Raspbian系统密码 树莓派Raspbian系统默认登录用户名为pi,该账户默认密码是raspberry(可在raspi-config中修改). 树莓派的Raspbian系统root用户默认 ...

  4. vue项目使用html5+ barcode扫码在苹果遇到的问题以及自己的解决方法

      之前在记录扫码 在安卓时,会出现黑屏,错位,闪退等等问题.解决方法在另一篇文章里 https://www.cnblogs.com/huzhuhua/p/11064764.html . 当时以为 是 ...

  5. Cheat Engine 修改汇编指令

    打开游戏 扫描阳光 扫描过程就不讲了 找到阳光的地址 显示反汇编 找到使阳光减少的反汇编代码 空指令替换 将阳光减少汇编指令,用空指令替换.这样阳光就不再减少了 指令替换 也可以将汇编指令修改,减少变 ...

  6. RabbitMQ基本概念(二)-RabbitMQ消息队列架构与基本概念

    没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. RabbitMQ架构 说是架构其实更像是应用场景下的架构(自己画的有点丑,勿嫌弃) 从图中 ...

  7. OSI&TCP/IP模型

    OSI模型 OSI协议 基于OSI模型异构网络主机之间通信的协议 1. 应用层 不同的应用程序所在层,如邮件程序,web程序 2. 表示层 不同的文件类型如图片,视频等 3. 会话层 决定是否建立与其 ...

  8. MAC安装配置maven环境变量

    1.下载maven包: 下载链接:

  9. 解决Android studio导航tools下没有android怎么打开DDMS工具

    因为这个功能用的人少, 新版本就去掉菜单入口了, 但这个功能并没有删除,打开方式:点开terminal ,也就是AS自带的命令行工具, 输入monitor 回车就启动了, 1.点开terminal 2 ...

  10. Odoo中的domain

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826127.html 一:domain表达式 domain表达式:通常用来筛选数据记录.它们使用特殊的语法 ...