我尝试请求一个网页并通过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
请求。
1条答案
按热度按时间r3i60tvu1#
亚马逊只是阻止基本的网页报废所作的程序没有标题和更多,几个条件可以触发他们的保护(导致发送垃圾),见更多与Gidon Lev Eli's answer on Quora。
你仍然可以通过让你的程序与亚马逊互动更“像一个真正的浏览器”而不是“一个纯粹的无头脚本”来绕过它。