使用 ionic 创建 API 的cheerio

问题描述

我正在创建一个离子应用程序。我正在使用 Cheerio 和 Node.js 来抓取站点。我无法将整个数组返回到 localhost,它只返回第一个对象。我该如何返回整个数组?

这是抓取代码(scraper.js)

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

request('https://mywebsite',(error,response,html) => {
    if (!error && response.statusCode == 200) {
        const $ = cheerio.load(html)
        const art = $('article').each((i,el) => {
            const title = $(el)
                .find('.entry-title.mh-posts-grid-title')
                .text();
            const link = $(el)
                .find('a')
                .attr('href');
            const image = $(el)
                .find('.mh-thumb-icon.mh-thumb-icon-small-mobile')
                .text()
            const Arra = { title: [title],link: [link],image: [image] }
            exports.Arra = Arra

这是我导出数据的代码(document.js)

const express = require("express");
const ok = require('./ok')
const app = express();
const porta = '8000'



app.get('/',(req,res) => {
    res.send(ok.Arra);
})

app.listen(porta,() => {
    console.log(`Server ex ${porta}`);
});

解决方法

如果发布的代码是您代码的总和,那么问题很可能是缺少结束标记。应该如下图所示:

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

const Arra = [];

request('https://mywebsite',(error,response,html) => {
    // reset Array on each call
    Arra = [];
    if (!error && response.statusCode == 200) {
        const $ = cheerio.load(html)
        console.log('the array I am going to iterate over is',$);
        const art = $('article').each((i,el) => {
            const title = $(el)
                .find('.entry-title.mh-posts-grid-title')
                .text();
            const link = $(el)
                .find('a')
                .attr('href');
            const image = $(el)
                .find('.mh-thumb-icon.mh-thumb-icon-small-mobile')
                .text();
            // you must push each result into the array otherwise you are just going to have one result.
            Arra.push({ title: [title],link: [link],image: [image] });
    } // close of .each block
  }// close of if block
 }// close of request block
exports.Arra = Arra;