获得Gibberish Chunk On http获取响应

时间:2015-08-21 22:24:03

标签: javascript node.js httprequest

我正在尝试使用nodejs抓取一个页面。我尝试使用python,我获得了成功。但是当我使用节点js请求进行相同的http get请求时,我得到一个乱码的块作为响应。我是节点js的新手,我不知道出了什么问题。

这是我的代码:

var request = require('request');

var options = {
  url: 'myurlhere',
  headers: {'User-Agent':' Secure_User',
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
          'Accept-Language':' en-US,en;q=0.5',
          'Accept-Encoding':' gzip, deflate'
     }
};

function callback(error, response, body) {
  if (!error && response.statusCode == 200) {
    // var info = JSON.parse(body);
    // console.log(info.stargazers_count + " Stars");
    console.log(body);
  }
}

request(options, callback);

python中的相同代码有效:

import requests

headers= {'User-Agent':' Secure_User',
          'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
          'Accept-Language':' en-US,en;q=0.5',
          'Accept-Encoding':' gzip, deflate'
     }

url1="myurl"

r1=requests.get(url=url1)

print r1.text

在python中我得到确切的html作为response.In节点js我得到类似的东西:

       _��������f�,�%vL�=d��A�
                                                                         Ђg���[�!�q)Ӆhr��+2�&�������)Jh��d���(�r��<-30>9a5@�{�F��7��O��Brg��E~BaU�S�V��B�SB!��ѡz�ո��a1��4�'W��ls'���z�$��z�1J7.���]�!��}Ρ�(�)�*wz�NB��p���&�C:��G,TM1�����_\�\2�s�
~���
-�P�T4�6A��+���+���@EU�T-��s���.��    K�:��z"�i-����z��S $�-4��[y��{|�Q
F��ٝ'
Њ�s
   %��xx��]H�!��H({�H�,��^o0�S���?�����N�:f4qք�j��4��5V�yZ���G Xg�T���߬�X��e����W�B
5V{�jOي���A��[�*�<埸N�i<�p���]#�������,��2�@�!�8                                         Bۋs*
                                                      �EVM�����3��Qu�(T�PL�iӮՈ�`�x36*J������b�Du��=���%֣V/��u�**��b^��<O��AY�Nis�1�j�3_���֔d�����g���'0�^<{Є��ς?r�-�    ��[�,ۆ�JPzI�C���r+�֑��e$���'KMJIK�y+��0�Ep�B�[����*���>��﮻�V3%��'%��ŏ"�S:ϥ*�`��4��S!�-ʳdj�J#����*8�}Jw����J�~]][}   i����6�
���`:�խ���_Z� P�;�?wN
                       ���/��~�H�  �}s���/-TQ�>���O�0��~�>��بS�˾��M�pf�mF�]��\���jfr���BL㏾����#�h8?�L  ���^�
���`�\ ��i��k&7�sd���x�tp�g����%��Z=�����UͰ�|"��y���'�x�,n��|H������%z���Qa��   lX��S���_���6G�;��kj5�~`�U�KY-�Q�
                                                                                                                          \j 0<�Ad�Ӻ��Cc��G�[umO�qk����$<����V])�'S��r؋D��L��t��4��g���
^=v;+�4q����(�)l)��7�+����Z����d���ьK�R8�rdB��y�.�?c7��T]�����И۝/��4���8�
                                                                                 M`��h�l�� ���
                                                                                                <Ɖ��V����LG���C���-��]�$�D�D��O���.殡�6�2��    ��
                                                                                                                                                  ��ENYF��[Ѩ��?���=.���7&O��_܊?F��E�v�@у�S�����X5�O�d{�?�����z�U�����{���\� �O*��h�a�Ղ�r9ǒ:�S ����Ie�I�c�<ޓ�\�'��W��]���P��˒جc
                                                                                                              ~�Ǣci�-q�����+�K����w9P�(�&����Z���'L
����
       KO9�����"�)-)���C@�GF���C�)���n�a�f�6�gR'��h��f��j��ݜ�N����t���k��l�i]�n�n.>�Y�g(�D�&Q    L�A�K��v��-�}Ë��$���esf�s�m�ϝf���b%�z�#&�aS�5Ɩ,M�*�m�\,X�ʂ5�+�1���3��|+�p*�F�OlD^ۣ�V��<d�OTw�߬T����U����2a�D!G�̓8���p6��=�n���݆���&g������ma |y�`�80m�u,�t<�s��(&˸��Q��e��Tq6ey8��'��L'�����C�ׄȂ�0�;
�@,�kD�

1 个答案:

答案 0 :(得分:1)

响应很可能是gzip,因为您已向服务器表明您愿意接受此类响应。

但是,request默认情况下不会自动解压缩这些响应。您可以通过检查console.dir(response.headers)的输出来验证这是发生了什么。如果是这种情况,您可以在请求选项中设置gzip: true,以使body包含解压缩的响应。