【问题标题】:Scraping website to retrieve html elements and associated styles抓取网站以检索 html 元素和相关样式
【发布时间】:2019-11-11 06:02:59
【问题描述】:

我正在尝试抓取网站以获取所有带有提供标签的元素,例如$('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)
    });

我不知道如何遍历所有子元素并获取它们的样式。任何建议将不胜感激。

【问题讨论】:

    标签: javascript node.js web-scraping puppeteer cheerio


    【解决方案1】:

    你可以使用.children([selector])的方法,刚刚在cheerio文档中看到,它会给出数组,你可以使用我认为的循环它,你试过了吗?

    【讨论】:

      【解决方案2】:

      在欢呼中,你可以像下面这样循环事件

      const result = $('.listing > tbody:nth-child(1) tr').each((i, item) => {
          const $item = $(item);
          const comicName = $item.find('td > a').text().trim();
      });
      

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 2014-01-29
        • 1970-01-01
        • 2023-01-27
        • 2019-02-05
        • 1970-01-01
        • 1970-01-01
        • 2022-07-21
        • 2018-04-06
        相关资源
        最近更新 更多