如何用java获取网页源代码

如何用java爬取网页源代码

分为3个步骤:

  1. 分析实现方式
  2. 代码展示
  3. 结果展示

1、分析

以b站为例 抓取b站的源代码是这样的

在这里插入图片描述

那么我可以用URL对象获取HttpURLConnection对象

HttpURLConnection对象:它继承自URLConnection,可用于向指定网站发送GET请求、POST请求。

调用URL中的 openConnection()再通过强转获得连接对象HttpURLConnection

HttpURLConnection 向网页发送请求然后我们读取网页的源代码

在我们发送请求的时候可能有些网址会报一个错误:Server returned HTTP response code: 403 for URL

这个错误的意思大概就是服务器的安全设置不接受Java程序作为客户端访问

这个时候我们需要进行安全设置:

//这个方法是HttpURLConnection中的方法  参数内容具体什么意思我也不知道,反正就是设置安全性
setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

既然说到读取 那么就需要InputStream输入流 在HttpURLConnection有个 getInputStream()方法 可以获取我们的输入流对象

获取到了输入流就等于是已经拿到了源码

下面展示代码 我会把捕获到的源码写入到txt文件中

2、代码展示

main方法

public static void main(String[] args) throws Exception{
    getURLData("https://www.bilibili.com/","utf-8");
}

getURLData是我自己定义的方法 我是在方法中实现获取源码

getURLData 方法

static void getURLData(String Url, String coding) throws Exception {
    //创建URL对象  参数设置需要爬取的网址 也就是我们方法传过来的参数
    URL url = new URL(Url);

    //得到一个HttpURLConnection 对象
    HttpURLConnection huc = (HttpURLConnection) url.openConnection();
    //防止出现Server returned HTTP response code: 403 for URL 的错误
    //也就是服务器的安全设置不接受Java程序作为客户端访问  所以我们进行安全设置
    huc.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
    
    //通过HttpURLConnection获得输入流对象
    InputStream is = huc.getInputStream();
    
    //使用缓冲字符输入流获取源码  设置编码
    BufferedReader r = new BufferedReader(new InputStreamReader(is,coding));
    String line;
    
    //写入文件中
    BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1、idea项目\\算法和数据结构\\Demo\\src\\test\\_爬网址源码\\1.txt"));
    //readLine()一次读一行 
    while ((line = r.readLine()) != null){
        bw.write(line);
        //读完一行就换行
        bw.newLine();
        //清空缓冲区
        bw.flush();
    }
    //关闭资源
    bw.close();
    r.close();
    is.close();
}

3、结果展示

在这里插入图片描述

这样我们就获得了b站的源代码,如果想要只爬取自己想要的数据
那么对数据(字符串)进行一个过滤就行了

学会了的点个赞吧~

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值