axios 请求的网页HTML响应不可读

uxhixvfz  于 2022-11-29  发布在  iOS
关注(0)|答案(1)|浏览(106)

我尝试请求一个网页并通过cheerio运行它,但响应HTML不可读,并且由�a��{t��之类的字符组成。
如何收到可读的响应?

const axios = require('axios');
const cheerio = require('cheerio');

axios.get('https://www.amazon.co.uk/Acer-XF243YPbmiiprx-Monitor-FreeSync-Adjustable/dp/B097F6DT45')
    .then((response) => {
        if (response.status === 200) {
            const html = response.data;
            const $ = cheerio.load(html);
            console.log($.html())
        }
    }, (error) => console.log(err));

我收到的内容:

�Sn����M�٠��g���+=�������&x��.�@!�Q36�%�[�H�+ݴ�|��_/��d�8_
K�b&E�_�}[U1�@u梅Y����{T6ǞOrt��q���ri����eJ(���w����~}S�
    �4/��&�2�y���X, �Ǥ���0b�n��PS6O��kY��=�2k�Z��K�Z��r�t
    A4�����c���vnY�{t���u�_���C��C&��u����W)���He���O�X��
        �]P�
    ��Ѐ�(�?�,y�m����b��|6���B�|�l6��ݻ+&�6�/vH�O�oX�;�X�s 
    [����I��&��U �����v�=�vR{��֥����L�r��tG�l�ܓY�N)����(
        �(����qX���Z=f�b�-�����At舮�^U6���ف{�h�w�p���m��ϝ

在我尝试修复的过程中,我试图重新编码对utf-8的响应。我还从http而不是https请求。

r3i60tvu

r3i60tvu1#

亚马逊只是阻止基本的网页报废所作的程序没有标题和更多,几个条件可以触发他们的保护(导致发送垃圾),见更多与Gidon Lev Eli's answer on Quora
你仍然可以通过让你的程序与亚马逊互动更“像一个真正的浏览器”而不是“一个纯粹的无头脚本”来绕过它。

相关问题