Javascript 谷歌词典
我正试图从谷歌字典中删除一些内容,并创建一个非官方的API。我尝试使用cheerio和Node.js的请求包来实现这个功能 这是我的密码: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
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中,classvk_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托管在上,可以随意使用。