【问题标题】:Error with Cheerio on Node jsNode js 上 Cheerio 出错
【发布时间】:2018-05-11 13:11:32
【问题描述】:

我正在尝试使用cheerio 解析代码并在Node Js 上请求,但我收到错误undefined我已经检查过了,这不是请求错误,而是cheerio 这是我的解析代码的一部分。

            const options = Object.assign({
      url: buildUrl(opts),
      followAllRedirects: true
    }, opts.requestOptions);

    request(options, opts.throttle)
    .then(cheerio.load)
    .then(parseFields)
    .then(function (app) {
      resolve(app);
    })
    .catch(reject);
  });
}
 function parseFields ($) {

const h2 = $('faq_cat').attr('id')

const fields = {
  h2
};

我要解析的内容

              <div class="faq_cat" id="faq_box_faq2">

谢谢大家!)

Express 服务器应用代码:

const express = require('express')
const app = express()

var gplay = require('google-play-scraper');

gplay.download({downloadId: 'air.com.helloair.HELLOFROG',
nameid: 'digital-world-digimons'})
  .then(console.log, console.log);

app.listen(3000, () => console.log('Example app listening on port 3000!'))

使用 console.log(h2)

代码屏幕

使用控制台.log($.html());

屏幕工作!

【问题讨论】:

  • 你从哪里得到undefined?完整的错误信息是什么?
  • 在 node js 命令行中(Windows 上的命令提示符)
  • 这是完整的错误消息

标签: javascript node.js request cheerio


【解决方案1】:

您的选择器缺少.

现在您正在寻找一个名为faq_cat 的标签,但它并不存在。你想选择一个类名为faq_cat的元素

使用const h2 = $('.faq_cat').attr('id')

【讨论】:

  • @НекТраммм 你在代码中的任何地方都使用console.log吗?如果可以,你也可以展示那部分吗?
  • 是的,我只是发送 console.log 和 express server app 的代码
  • 为什么不尝试在const h2 = $('faq_cat').attr('id') 后面加上console.log(h2); 看看是否打印出faq_box_faq2
  • 我也可以向您发送我正在尝试解析的网站link
  • 您确定要将页面 HTML 传递给 cheerio.load 函数吗?
猜你喜欢
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多