我正在尝试使用Node.js中的Cheerio抓取Google搜索结果。我不断收到“ 503-服务不可用”错误。一些请求给了我适当的响应,但是此错误弹出。我确实在stackoverflow上读过类似的问题,但是找不到答案。
我尝试添加用户代理,甚至在标头中设置代理,但没有成功。
如果可以做到的话,我该如何解决呢?
感谢任何帮助!
代码:
const request = require("request");
var getPage = url => {
return new Promise((resolve, reject) => {
request({
url: url,
headers: {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763",
//host : "37.59.248.190",
//port : 8080
}
}, (error, response, html) => {
console.log(response.statusCode, response.statusMessage);
if (!error && response.statusCode == 200) {
resolve(response);
} else {
reject(response);
}
});
});
}
module.exports = getPage;
答案 0 :(得分:1)
我已经尝试过您的代码,并且对于使用相同网址连续运行20次的代码来说,它工作得很好。
根据搜索字词和查询的频率,如果Google怀疑客户活动不正常,可能会拒绝提供您的请求。一些消息来源还指出,Google具有检测抓取的机制。如果您超出了一定数量的请求,Google甚至可能会阻止您的IP。有关更多信息,请参见以下链接: