Javascript 谷歌词典

Javascript 谷歌词典,javascript,node.js,web-scraping,user-agent,cheerio,Javascript,Node.js,Web Scraping,User Agent,Cheerio,我正试图从谷歌字典中删除一些内容,并创建一个非官方的API。我尝试使用cheerio和Node.js的请求包来实现这个功能 这是我的密码: var cheerio = require("cheerio"); var request = require('request'); request({ method: 'GET', url: 'https://www.google.co.in/search?q=define+love' }, function(err, response

我正试图从谷歌字典中删除一些内容,并创建一个非官方的API。我尝试使用cheerio和Node.js的请求包来实现这个功能

这是我的密码:

var cheerio = require("cheerio");
var request = require('request');

request({
    method: 'GET',
    url: 'https://www.google.co.in/search?q=define+love'
}, function(err, response, body) {

    if(err){
        return console.error(err)
    }


    var $ = cheerio.load(body);

    var a = $(".vk_ans span").text();
    console.log(a);

});
最初,我试图放弃这个页面“”,我试图放弃写的粗体爱情,它写在一个跨度中,在div中,class
vk_ans


但是当我
console.log
得到答案时,结果是一个空行,其他所有地方我都在做同样的事情,Cheerio工作得很好。我缺少什么?

为了不被识别为机器人,您需要一个用户代理头。 试试这个:

var cheerio = require("cheerio");
var request = require('request');

request({
  method: 'GET',
  url: 'https://www.google.co.in/search?q=define+love',
  headers: {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
  }
}, function(err, response, body) {

  if (err) {
    return console.error(err);
  }

  var $ = cheerio.load(body);

  var a = $(".mw").text();
  console.log(a);

});

非常感谢,它起了作用,尽管我有一个疑问,当我试图在没有用户代理标题的情况下退出时,我虽然不能放弃爱情定义和所有的东西,但是谷歌说在这么多的时间里找到了这么多结果的那部分,我可以放弃,为什么会这样?@SurajJain很可能是因为字典数据是Javascript请求的结果,并且只有当用户代理是浏览器时,这些数据才会呈现在页面中。@SurajJain您可以使用Chrome进行检查,例如将用户代理更改为“Googlebot”(查看Internet上的操作方法)你会看到字典内容没有呈现。实际上,字典是呈现的,虽然它不一样,没有css,并且不是所有的东西都在那里,所以这就是为什么我可能无法选择它,div id和all都被更改了。我说的对吗?使用公认的答案解决方案解决了问题,我制作的字典API托管在这里,可以随意使用。已经很长时间了,现在API每天的点击量达到50k,时间过得飞快。API托管在上,可以随意使用。