NodeJS Cheerio 抓取 li 标签总是返回 NULL

问题描述 投票:0回答:2

我正在尝试将 URL 变量中页面上的 li 标记中包含的 URL 归零。它应该很简单,但我无法让它发挥作用。我得到了正确的元素数量,但它们都是空白的。 text() 返回 '' & html() 返回 null。我在这里做错了什么?

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

function getHistory(){
  let url = 'http://coinmarketcap.com/historical/';
  request(url,(error,response,html)=>{
    var $ = cheerio.load(html);
    $('li.text-center').each((i,element)=>{
      var omg = $(this).html();
      console.log(omg);
    });
  });
}
javascript html node.js cheerio
2个回答
9
投票

与实际的 jQuery 不同,cheerio 显然没有设置

this
的值。如果你改变这个:

var omg = $(this).html();

对此:

var omg = $(element).html();

您将看到您期望的 HTML。


如果您真正想要的是

href
,那么您应该使用选择器定位
<a>
标签,并从中获取实际的
href
属性。你可以这样做:

function getHistory(){
  let url = 'http://coinmarketcap.com/historical/';
  request(url,(error,response,html)=>{
    let $ = cheerio.load(html);
    $('li.text-center a').each((i,element)=>{
      let omg = $(element).attr('href');
      console.log(omg);
    });
  });
}

0
投票

那是因为您在

箭头函数
中引用了this,它并没有生成自己的
this

© www.soinside.com 2019 - 2024. All rights reserved.