使用nodejs和cheerio的网络抓取Google搜索页面

时间:2018-08-17 02:51:02

标签: node.js web-scraping cheerio

我在抓取Google搜索页面时遇到问题。我可以抓取正常的网页,但是相同的代码在搜索页上不起作用

我正在使用带有cheerio api的nodejs。搜索页面用于“我附近的餐厅”。这是代码

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

request('https://www.google.com/search?rlz=1C1CHBF_enUS795US795&q=restaurants+near+me&npsic=0&rflfq=1&rlha=0&rllag=43556429,-83953443,247&tbm=lcl&ved=2ahUKEwikkKDVhvPcAhUEmuAKHekOBl4QjGp6BAgDEE8&tbs=lrf:!2m1!1e2!2m1!1e5!2m1!1e1!2m1!1e3!3sIAE,lf:1,lf_ui:9&rldoc=1#rlfi=hd:;si:;mv:!1m3!1d37687.821017182374!2d-83.91493835!3d43.58986!2m3!1f0!2f0!3f0!3m2!1i324!2i313!4f13.1;tbs:lrf:!2m1!1e2!2m1!1e5!2m1!1e1!2m1!1e3!3sIAE,lf:1,lf_ui:9',(error,response,html)=>{
  if(!error && response.statusCode==200){
    const $= cheerio.load(html)

    $(".dbg0pd").each(function(i, element){
      var a = $(this);
      console.log('This is from inside the loop')
      console.log(a.text());
    });

  }
})

在网页中,运行inspect元素显示类dbg0pd包含div元素,该元素包含餐厅名称。但是.each() jQuery循环甚至没有触发,因为我的测试console.log语句不打印这是从循环内部

运行node scrape.js不会打印任何内容。

0 个答案:

没有答案