Я новичок в NodeJS и хотел создать собственное приложение для веб-скребка - до сих пор у меня работал скребок, но я хотел бы отобразить возвращенный объект на веб-странице.
Скребок создаетобъект, который содержит массив видео - массив, который я хочу отобразить в браузере.
Пока что мне удалось отобразить результат с помощью console.log (), но я хочу взятьэто шаг вперед и показать его на веб-странице. Кто-нибудь знает, как я мог это сделать?
index.js
const webscraping = require("./webscraping");
const express = require('express');
const app = express();
const pageURL = "https://example.com";
webscraping(pageURL).then(dataObj => {console.log(dataObj)})
scraper.js
const puppeteer = require("puppeteer");
const webscraping = async pageURL => {
const browser = await puppeteer.launch({
headless: true,
args: ["--no-sandbox"]
});
const page = await browser.newPage();
let dataObj = {};
try {
await page.goto(pageURL);
const videoCollection = await page.evaluate(() => {
const videoList = $('.cmn-list-product01 > li');
const maxPages = $('.cmn-box-tabMain01').find(".next").prev().text();
const curPage = $('.cmn-box-tabMain01').find(".col04").find(".on").text();
let pageData = {
all_pages: maxPages, current_page: curPage
};
let newVideoList = [];
videoList.each(function () {
const id = $(this).attr("data-content_id");
const title = $(this).find('a').find('dl').find('dt').text();
const image = $(this).find('.lazy').attr("data-original");
newVideoList.push({
id,
title,
image
});
});
const keywords = ["cooking", "tutorial"];
const filteredVideos = newVideoList.filter(item => keywords.some(el => item.title.toLowerCase().includes(el)));
filteredVideos.unshift(pageData);
return filteredVideos;
});
dataObj = {
total: videoCollection.length,
videoCollection
};
} catch (e) {
console.log(e)
}
browser.close();
return dataObj;
};
module.exports = webscraping;