Очистка веб-сайта для получения HTML-элементов и связанных стилей - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь очистить веб-сайты, чтобы получить все элементы с помощью предоставленного тега, например, $ ('header') и связанные с ними стили. По сути, проходите через каждый элемент, захватите связанный с ним css и выгрузите все это в файл.

В настоящее время я настроил следующее:

// npm install --save request request-promise cheerio puppeteer

const rp = require("request-promise");
const puppeteer = require("puppeteer");
var fs = require("fs");
const $ = require("cheerio");
const url = "url here";

puppeteer
    .launch()
    .then(function(browser) {
        return browser.newPage();
    })

    .then(function(page) {
        return page.goto(url, {waitUntil: 'load', timeout: 0}).then(function() {
            return page.content();
        });
    })

    .then(function(html) {
        let header = $('#header', html);

        fs.writeFile("test.txt", header, (err) => {
            if (err) console.log(err);
            console.log("Successfully Written to File.");
        });
    })

    .catch(function(err) {
        console.log(err)
    });

Я застрял в том, как бы я перебрал все дочерние элементы и захватил их стили. Любые предложения будут с благодарностью.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

В cheerio вы можете что-то зациклить событие, как показано ниже

const result = $('.listing > tbody:nth-child(1) tr').each((i, item) => {
    const $item = $(item);
    const comicName = $item.find('td > a').text().trim();
});
0 голосов
/ 11 ноября 2019

Вы могли бы использовать метод .children([selector]), только что видел в документации cheerio, он дал бы массив, вы могли бы использовать то, что я думаю и зациклить, вы пробовали это?

...