【发布时间】:2019-01-02 02:56:52
【问题描述】:
所以我正在学习使用节点 8 进行网络抓取,遵循这个 npm install --save request-promise chefio puppeteer
代码很简单
const rp = require('request-promise');
const url = 'https://www.examples.com'; //good
rp(url).then( (html) => {
console.log(html);
}).catch( (e) => {
console.log(e);
});
现在如果 url 是 examples.com,我可以看到纯 html 输出,太棒了。
Q1:如果是yahoo.com,它会输出二进制数据,例如 �i��,a��g�Z.~�Ż�ڔ+�Vr�K�#,bc���8�����|。 ���U>��p4U>mś0��Z�M�Xg"6�lS�2B�+�Y�Ɣ����? ��* 这是为什么?
Q2:然后是 nasdaq.com, 常量 url = 'https://www.nasdaq.com/earnings/report/msft'; 上面的代码只是不会完成,似乎挂在那里。
请问这是为什么?
【问题讨论】:
-
你能分享一些为 yahoo.com 输出的“二进制数据”吗?
-
我已经尝试使用另一个名为“Axios”的HTTP客户端包,结果是一样的,也许是雅虎返回数据的方式?
-
@FelixFong 也许,我对这些东西不太了解,但如果你在浏览器中运行,一切都很好。第二个问题更令人困惑,只是什么都不返回并挂在那里。