node.js - Google搜索结果抓取显示“服务不可用”错误

标签 node.js web-scraping google-search

我正在尝试在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;

最佳答案

我已经尝试过您的代码,并且对于使用相同网址连续运行20次的代码来说,它工作得很好。

根据搜索字词和查询频率,如果Google怀疑客户活动不正常,可能会拒绝提供您的请求。一些消息来源还指出,Google具有检测抓取的机制。如果您超出了一定数量的请求,Google甚至可能会阻止您的IP。有关更多信息,请参见以下链接:


Error with Google search in Python: 503 Service Unavailable
Is it ok to scrape data from Google results?
https://security.stackexchange.com/questions/191470/how-does-google-protect-against-scraping
https://blog.hyperiongray.com/6-golden-rules-google-scraping/

关于node.js - Google搜索结果抓取显示“服务不可用”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55331946/

相关文章:

node.js - nodejs用Buffer将二进制数据写入WritableStream

node.js - promise 不等待 firebase 查询完成并很快得到解决

excel - 使用 Power Query 从网站中提取未完全加载的表

python - 使用 Python 编写的谷歌图像抓取器与网络浏览器之间的不同 html 代码结果(UI)

node.js - 使用 cli 在现有 Angular 2 应用程序上进行 Angular 通用安装

mysql - 将数据从node.js传递到sql查询

python - 未使用 scrapy 以 XML 或 JSON 形式抓取数据

xpath - Scrapy找不到XPath内容

azure - Azure Application Insights 与 Google 搜索之间的 IP 地址不匹配

seo - 谷歌游戏星级