Могу ли я использовать сканированный из Node.js в javaScript? - PullRequest
2 голосов
/ 24 апреля 2019

Я новичок в javaScript и пытаюсь отсканировать сайт с помощью node.js. Я мог бы проверить данные в журнале консоли, но хочу использовать данные в другом файле javaScript. Как я могу получить данные?

Проблема в том, что я никогда не использовал node.js. Я делаю javaScript, поэтому знаю, как писать код, но не знаю, как работает сервер или сервер.

Я пытался открыть его на своем локальном хосте, но метод узла (например, require ()) не работал. Я узнал, что это потому, что узел не работает в браузере. (Видите? Очень новый для js)

Должен ли я использовать упаковщик или что-то?

Шаги, которые я думал, были,

  • как-то отправить данные как json
  • каким-то образом получить данные JSON и визуализировать

Вот файл кода сканирования.

const axios = require("axios");
const cheerio = require("cheerio");
const log = console.log;

const getHtml = async () => {
  try {
    return await axios.get(URL);
  } catch (error) {
    console.error(error);
  }
};

getHtml()
  .then(html => {
    let ulList = [];
    const $ = cheerio.load(html.data);
    const $bodyList = $("div.info-timetable ul").children("li");


    $bodyList.each(function(i, elem) {
      ulList[i] = {
          screen: $(this).find('a').attr('data-screenname'),
          time: $(this).find('a').attr('data-playstarttime')  
        };
    });

    const data = ulList.filter(n => n.time);
    return data;
  })
  .then(res => log(res));

Не могли бы вы объяснить, какие шаги я должен предпринять?

Кроме того, было бы здорово, если бы я мог понять, ПОЧЕМУ необходимы шаги.

Большое спасибо!

1 Ответ

0 голосов
/ 24 апреля 2019

вы можете попробовать записать свои данные в файл JSON и продолжить, это один из способов, затем вы можете использовать данные как объект в любом файле js

const appendFile = (file, contents) =>
new Promise((resolve, reject) => {
fs.appendFile(
  file,
  contents,
  'utf8',
  err => (err ? reject(err) : resolve()),
);
 });

getHtml()
 .then(html => {
let ulList = [];
const $ = cheerio.load(html.data);
const $bodyList = $("div.info-timetable ul").children("li");


$bodyList.each(function(i, elem) {
  ulList[i] = {
      screen: $(this).find('a').attr('data-screenname'),
      time: $(this).find('a').attr('data-playstarttime')  
    };
});

const data = ulList.filter(n => n.time);
return data;
})
.then(res => {
   return appendFile('./data.json',res.toString())
}))
.then(done => {log('updated data json')});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...