node.js实例:axios模块根据URL获取网页源码

1. 核心代码部分:

	//获取网页
	async function getPage(url,charset = 'UTF-8'){
	  var data;
	  try {
	      const res = await axios({
	          method: 'get',
	          url: url,
	          responseType: "arraybuffer",
	          headers:{
	              'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/99.0.1150.36'
	          }
	      })
	      data = iconv.decode(res.data, charset);//编码转换
	  } catch (error) {
	      // console.log('获取',url,'页面失败!',error)
	      if (error.response && error.response.status === 404) {
	          console.log('【******页面不存在******】');
	      } else {
	          console.log('抓取',url,'页面出错:', error.message);
	      }
	      data = "error:" + error.response?.status;
	  }
	  return data;
	}

说明:这里 header 参数需要设置 user-agent ,用于模拟浏览器,以防止被检测为爬虫而无法获取到网页源码,这里使用: User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/99.0.1150.36

2. 需要引入的模块(包括:axiosiconv

	const axios = require('axios');
	const iconv = require('iconv-lite');
注:模块使用前需要 npm 安装,即:
npm install axios iconv-lite

3. 编码转换

由于不同的网页编码会有所不同,如:UTF-8、gb2312、gbk,因此需要进行 iconv 模块进行转码,对应代码为:

data = iconv.decode(res.data, charset);//编码转换

4. 网页返回值错误处理

网页源码抓取会遇到各种意外情况,如:404、501等。因此,需要针对错误返回值进行判断,这里针对 error.response 的返回值进行判定,代码如下:

error.response.status

5. 编码规范

对于代码的错误判定是编程中非常重要的一环,因此,这里使用了 try catch 语句。

原文链接:node.js实例:axios模块根据URL获取网页源码 - JS - 小码哥的IT人生

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值