无法从Cheerio的<div> Node spider获取信息

时间:2016-11-27 16:56:55

标签: javascript jquery node.js cheerio

我试图从巴尔的摩市网站(监控状态项目)下载CCTV位置的纬度/经度位置,但没有让控制台记录任何内容。

这是网站:

enter image description here

我的代码是:

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


let URL = 'https://data.baltimorecity.gov/Public-Safety/CCTV-Locations/hdyb-27ak/data'
let cameras = [];

request(URL, function(err, res, body) {
  if(!err && res.statusCode == 200) {
    let $ = cheerio.load(body);
    $('div.blist-t1-c140113793').each(function() {
      let camera = $(this);
      let location = camera.text();
      console.log(location);
      cameras.push(location);
    });
    console.log(cameras);
  }
});

我已尝试设置为blist-t1-c140113793blist-td blist-t1-c140113793,但两者均无效。

1 个答案:

答案 0 :(得分:1)

那是因为在渲染页面之后,这些div的数据是异步加载的。 Cherrio或任何其他此类库不执行JavaScript。您需要分析网络流量并了解哪个HTTP调用加载此数据,或使用Selenium之类的东西,它实际上在浏览器中执行JavaScript。