Javascript 如何用nodejs解码html页面?

Javascript 如何用nodejs解码html页面?,javascript,html,node.js,request,decode,Javascript,Html,Node.js,Request,Decode,我正在提出请求 function get() { var headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q

我正在提出请求

function get() {
    var headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive',
        'Cookie': cookie,
        'Host': 'lms.hse.ru',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest'
    }
    var options = {
        url: 'https://lms.hse.ru/?sl&tab=9548',
        method: 'GET',
        headers: headers
    }

    return new Promise(function (resolve, reject) {
        request(options, function (err, response, body) {
            console.log(body);
        });
    })
}
控制台输出如下所示:

Y�w��v�l�W[y���Ěn���H�����`�EU�@2�̌�lT��yk˱�V��,�� �=n�4��{5�a�Z��;���~Ȯ:F��������7K`G��ض��1�T�$*`a�bZ~���bhn�hٷEW�Sݞ��x�c�p�DX��cG2��r��W���M�1p%  腅�鉄�f�Iɜ������
���zj�mvP���w����eùi�n�c��i��lt�歉�����0)\Lι�@��#��n�Fж��#
                                                          ����2z.OB�3����O�=����bdb`�s���a
          ��gkÈ&.ӿXzYñmv@��f��-q�g�&�Ŧy���5XZ
�=������Y2���Ti����i��x\
                        �6~�'8��k��ט�:���GT4�fþ�U���1J���&
                                                          � �����&��O��:v0L�)��A�^
      O׶��I�J�LH=��Z�g8^hʂCO�r��N���8���bmUEߵ|�$��D(��@�1��
                                                           r�:x}��糚QJ���|j3KUL����
   �`��Zʍ���PmR��0���]����5�Eį0ǫ,o�����W����^�Y ՜U
Q�;�ľ�-�]뷢[}��,��??1E�ݹ*K*��U�m��ڻk����-�3
e3*���X��_x#�1�mߎJ���m8�h�.����)��m�b���M٦�zf���G������T�pEa�   �
ɓ�l��1��V�Dt�'�9]VJ�Yo���K����Rd%�u�=�N4�Z��i,�;��m�%`����k!����w�u�~�  7
�D��l���c�>�u2p���E��~�$V^���Q�_&��2S�zV�G�kܑk�mZ��1Ӳ��]d��%�[^a!���|\�I��"Sd�ʫ`��p�vv��~�u?�J����7�h�F�~�{9=���a*H�`x��������22;)���31�N
在《邮递员》中,同样的回答看起来是这样的:

<!DOCTYPE HTML>

<html>
<head>
    <title>LMS HSE</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta name="description" content="" />
    <meta name="keywords" content="" />
    <!--[if lte IE 8]><script src="css/ie/html5shiv.js"></script><![endif]-->
    <script src="js/jquery.min.js"></script>
    <script src="js/jquery.scrolly.min.js"></script>
    <script src="js/skel.min.js"></script>
    <script src="js/init.js"></script>
    <script type="text/javascript" src="js/jquery.fileDownload.js"></script>
    <noscript>
        <link rel="stylesheet" href="css/skel.css" />
        <link rel="stylesheet" href="css/style.css?v=1" />
        <link rel="stylesheet" href="css/style-desktop.css" />
    </noscript>
    <link rel="icon" type="image/x-icon" href="favicon.ico" />
    <!--[if lte IE 8]><link rel="stylesheet" href="css/ie/v8.css" /><![endif]-->
    <!--[if lte IE 9]><link rel="stylesheet" href="css/ie/v9.css" /><![endif]-->

<style type="text/css">
/*
table {
width: 80%;
margin: auto;
}
*/
td {
text-align:left;
border-bottom: dotted 1px;
padding: 6px;
} ...

LMS HSE
/*
桌子{
宽度:80%;
保证金:自动;
}
*/
运输署{
文本对齐:左对齐;
边框底部:点1px;
填充:6px;
} ...
如何在nodejs中解码

Lorem Ipsum只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum一直是行业标准的虚拟文本,当时一位不知名的印刷商拿起一个打印工具,将其拼凑成一本打印样本书。它不仅存活了五个世纪,而且还跨越到电子排版,基本上保持不变。它在20世纪60年代随着包含Lorem Ipsum段落的Letraset表单的发布而流行,最近随着Aldus PageMaker等桌面出版软件的发布,包括Lorem Ipsum版本

我们为什么要用它?
读者在查看页面布局时会被页面的可读内容分散注意力,这是一个早已确定的事实。使用Lorem Ipsum的意义在于,它的字母分布或多或少是正态的,而不是使用“此处内容,此处内容”,使其看起来像可读的英语。许多桌面发布软件包和网页编辑器现在使用Lorem Ipsum作为默认模型文本,搜索“Lorem Ipsum”将发现许多尚处于起步阶段的网站。多年来,各种版本不断演变,有时是偶然的,有时是故意的(注入了幽默等)。

您在标题中接受了
gzip,deflate,br
,但您没有告诉请求您
gzip:true
,因此它没有解压缩响应

编辑得更准确些
这是假设您使用的是最有可能使用的。

技术上正确,但不是问题的好答案。告诉他如何安装负责解压的中间件会好得多。那么解决方案是什么呢?更新答案以显示您必须更改的内容。
var options = {
    url: 'https://lms.hse.ru/?sl&tab=9548',
    method: 'GET',
    headers: headers,
    gzip: true 
}