javascript - nodejs - request.get(url) 在 yahoo.com 的情况下返回二进制数据

标签 javascript html node.js http encoding

我正在尝试运行以下 JavaScript 代码。

request = require('request')
request.get('https://www.yahoo.com',function(err,res,body){ console.log(err ? err.message : body) })

但它正在记录二进制数据,而需要 html 字符串。

如果我用不同的网址(如 https://www.google.com)替换第一个参数,相同的代码将返回 html 响应。

我用以下代码在 ruby​​ 中尝试了相同的操作

require('open-uri')
puts open('https://www.yahoo.com').read

在这两种情况下它都会返回正确的 html 响应。

我想我在使用nodejs的request包时遗漏了一些东西。

最佳答案

您只会看到 gzip 编码的 html 字符串。使用 gzip 选项 ( docs ) 获取解压后的正文。

request.get({url: 'https://www.yahoo.com', gzip: true}, function(err,res,body){ console.log(err ? err.message : body) })

关于javascript - nodejs - request.get(url) 在 yahoo.com 的情况下返回二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39318182/

相关文章:

javascript - jQuery的scrollTop()在Safari中不起作用

javascript - 如何在node js客户端缓存.js文件

node.js - 尝试在 CentOS 上安装 nodejs 12 时出现错误

python - 使用 node.js pm2 在虚拟环境中运行 python 脚本

javascript - 使用 ajax/javascript 选择项目并将其添加回 mysql

javascript - 单击链接与复制粘贴链接时浏览器行为的差异?

iOS Cordova 将本地文件设置为 img src

java - org.openqa.selenium.NoSuchElementException : no such element: Unable to locate element

javascript - JS 更新时 iFrame 无法正常显示

google-chrome - Chrome 忽略了我的警报框中的单词