向导团队 - fourkings

【1】执行Http请求访问网页

1. 目标网址

我们的目标网址是当当网,url地址是 http://book.dangdang.com/

2. 获取HTML文档内容

目的是获取当当网的HTML文档内容,我们借助axios这个库发起HTTP的GET请求。

安装库: npm install axios

  • 源代码
//axios是用于发起HTTP请求的库
const axios = require('axios');// 要访问的目标网址
const targetUrl = "http://book.dangdang.com/";axios.get(targetUrl).then(function (response) {//get请求的响应结果是一个object,我们所需的HTML文档内容是该对象的data属性console.log(response.data)}).catch(function (error) {console.log(error);});

  • 运行结果

3. 原因分析与解决思路

3.1 原因分析

从运行结果可以看出,成功抓取了HTML文档的内容。但是存在中文乱码的情况,这种情况一般是编码不一致问题。axios编码默认是 utf8 ,那么我们只需要确定当当网的编码即可。

使用Chrome浏览器打开当当网,在Network中任意选中一条请求资源,可以查看到响应的头信息。如下响应头信息中编码为 GBK 。中文乱码就确认了是编码不一致的原因。

3.2 解决思路

既然两者编码不一致,那么解决思路就是改变其中一方的编码。由于axios不支持 gbk ,所以我们让另一方改变,也就是网页响应结果的编码转成 utf8

  1. 设置请求的响应结果以流方式返回,需要设置 responseType
  2. 借助iconv-lite这个库进行编码转换。

安装库: npm install iconv-lite

  • 源代码
// http://book.dangdang.com/
const axios = require('axios');
const iconv = require('iconv-lite');// 要访问的目标网址
const targetUrl = "http://book.dangdang.com/";//不断读取流数据并放入数组中,直到全部读取完就将数组中的数据转换为utf8编码的字符串
axios.get(targetUrl, { responseType: 'stream' }).then(function (response) {//此时的res.data 则为streamlet chunks = [];//'data'当有数据可读时触发。response.data.on('data', function (chunk) {chunks.push(chunk);});//'end'没有更多的数据可读时触发response.data.on('end', function () {let buffer = Buffer.concat(chunks);//使用iconv将'gbk'编码的buffer解码转换为'utf8'的字符串let str = iconv.decode(buffer, 'gbk');console.log(str)})}).catch(function (error) {console.log(error);});

  • 运行结果

从上方运行结果可以看出,中文乱码的问题已经解决。

请求中文乱码_【1】执行Http请求访问网页相关推荐

  1. postmain请求中午乱码_完美解决Get和Post请求中文乱码的问题

    对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题 request.setCharacterEncoding("utf-8"); ...

  2. Spring-解决请求中文乱码问题

    Spring-解决请求中文乱码问题 参考文章: (1)Spring-解决请求中文乱码问题 (2)https://www.cnblogs.com/andyfengzp/p/6197993.html (3 ...

  3. 【Servlet】HTTP请求中文乱码的问题

    请求中文乱码 在进行请求参数传递时,经常会遇到请求数据为中文时的乱码问题,当Form表单的文本域中输入中文时会产生乱码问题,出现乱码的原因与客户端的请求编码方式(GET请求或POST请求)以及服务器的 ...

  4. Tomcat 中 GET方式 请求 中文乱码 出现的原因

    网上很多关于GET方式请求中文乱码的解决方案,大体类似. 这里主要讲一下Tomcat在处理URL参数过程中, 究竟是为什么会导致了GET方式请求的中文乱码. 一句话概括就是: Tomcat默认将单字节 ...

  5. http请求中文乱码问题

    最近在开发android项目过程中,使用okhttp3来发送请求,频繁遇到在post请求时,在服务器一端获取参数时遇到中文乱码,而且竟然get请求不会乱码,放到另一个工程项目下也不会乱码,这就令人很奇 ...

  6. 解决get请求中文乱码问题

    在很多情况下get请求会发生中文乱码的情况,而换做post就不会,这其中的根本原因是get请求默认的是使用"iso-8859-1"编码,接下来介绍两种种解决get请求编码的方法 1 ...

  7. html请求socket乱码,Socket http请求中文乱码有关问题

    Socket http请求中文乱码问题 各位高手,麻烦帮忙看看这个 http请求乱码问题,百思不得其解啊.... Socket http请求"http://www.gome.com.cn/e ...

  8. 处理中文乱码_浅入深出:一次提问引发的深思,从此再也不怕“乱码”问题

    这是恋习Python之浅入深出系列第3篇原创首发文章 作者|丁彦军 来源|恋习Python(ID:sldata2017) 转载请联系授权(微信ID:2394608316) 近日,有位粉丝向我请教,在爬 ...

  9. ios请求头解决参数中文乱码_解决请求参数的中文乱码问题(get、post)

    2018-11-28 在web请求与响应中,会遇到乱码问题,比如填写表单数据时,难免会输入中文,姓名.公司名称等.由于HTML设置了浏览器在传递请求参数时,采用的编码方式是UTF-8,但在解码时采用的 ...

最新文章

  1. “==”和equals方法的区别
  2. 禁用当前的账户win7_拯救你的win7系统,电脑优化到位,打游戏才会流畅
  3. 装饰器 闭包 生成器 迭代器
  4. [深度学习] Normalization 模型
  5. Codeforces Round #724 (Div. 2) F. Omkar and Akmar 组合数学 + 博弈
  6. android多接口请求参数,okhttp3 使用json参数post方式请求接口数据(android)
  7. 同步异步 阻塞 非阻塞 异步调用 线程队列 协程
  8. Solr如何管理索引库
  9. java Socket实现简单在线聊天(二)
  10. python编程(ply库)
  11. WPF中同一窗口下的界面切换
  12. phpexcel读取输出操作
  13. console_init初始化的研究
  14. 轻薄 linux 笔记本,华为MateBook13Linux版全面屏轻薄性能笔记本一键重装win10图文
  15. Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用 -下
  16. 即席查询—Presto
  17. Linux、UNIX设置开机自动运行命令、脚本配置
  18. 苹果手机Java在那_iPhone8描述文件在哪?iPhone描述文件不见了如何解决?
  19. 基于中台的公共图书馆数据服务研究
  20. 计算机软技能,在个人简历中有哪些软技能可以写?

热门文章

  1. php 抽象类 继承,PHP 抽象类继承抽象类时的注意点
  2. 怎么把虚拟机清空内存_深入理解java虚拟机1——内存管理机制与回收机制
  3. freemarker 学习笔记
  4. language mysql_MySql 语言的分类;
  5. 我是如何做到的:不切换 Git 分支,同时在多个分支上工作的?
  6. 皮一皮:被看穿的既视感...
  7. Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响
  8. 面试:什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决?...
  9. 京东的热点key探测系统发布,单机 QPS 提升至 37 万
  10. Map 集合的坑你踩过几个?