【问题标题】:Something about nodejs? [closed]关于nodejs的东西? [关闭]
【发布时间】:2020-06-26 01:32:27
【问题描述】:

    (async () => {
  const browser = await puppeteer.launch({headless:false})
  const page = await browser.newPage()
  await page.goto("https://www.nguyenkim.com/tv-qled-samsung-65-inch-qa65q65rakxxv.html")
 
  const model = await page.evaluate(() => {
    let location = document.querySelectorAll(".bg-Pro")
    let name = document.querySelector(".product_info_name")
    let price = document.querySelector(".nk-price-final")
    let gift = document.querySelector(".cm-picker-product-options div:first-child")
    let gift2 = document.querySelector(".cm-picker-product-options div:nth-child(2)")
    let gift3 = document.querySelector(".cm-picker-product-options div:nth-child(3)")
    let gift4 = document.querySelector(".cm-picker-product-options div:nth-child(4)")
    let gift5 = document.querySelector(".cm-picker-product-options div:nth-child(5)")
    let gift6 = document.querySelector(".cm-picker-product-options div:nth-child(6)")
    let gift7 = document.querySelector(".cm-picker-product-options div:nth-child(7)")
    let infor = []
    location.forEach((item) => {
      infor.push({
      	Name: name.innerText,
        Price: price.innerText,
        Gift: gift.innerText,
        Gift2: gift2.innerText,
        Gift3: gift3.innerText,
        Gift4: gift4.innerText,
        Gift5: gift5.innerText,
        Gift6: gift6.innerText,
        Gift7: gift7.innerText
      });
    });
    return infor;
  });
  console.log(model);

嗨,伙计,我需要一些帮助! 我做了一个项目,但我不知道如何导出excel??有人知道怎么出口吗?? 我做了研究,但我仍然没有在 google 中找到任何有用的东西。我希望我能在这里找到它:D p/s:我的英语不是我的母语。谢谢你的时间!!

const puppeteer = require('puppeteer');
const fs = require('fs');
var csvWriter = require('csv-write-stream');
var writer = csvWriter({sendHeaders: false});
var xuat = "xuat.csv";

(async () => {
  const browser = await puppeteer.launch({headless:false})
  const page = await browser.newPage()
  await page.goto("https://www.nguyenkim.com/tv-qled-samsung-65-inch-qa65q65rakxxv.html")
 
  const model = await page.evaluate(() => {
    let location = document.querySelectorAll(".bg-Pro")
    let name = document.querySelector(".product_info_name")
    let price = document.querySelector(".nk-price-final")
    let gift = document.querySelector(".cm-picker-product-options div:first-child")
    let gift2 = document.querySelector(".cm-picker-product-options div:nth-child(2)")
    let gift3 = document.querySelector(".cm-picker-product-options div:nth-child(3)")
    let gift4 = document.querySelector(".cm-picker-product-options div:nth-child(4)")
    let gift5 = document.querySelector(".cm-picker-product-options div:nth-child(5)")
    let gift6 = document.querySelector(".cm-picker-product-options div:nth-child(6)")
    let gift7 = document.querySelector(".cm-picker-product-options div:nth-child(7)")
    let infor = []
    location.forEach((item) => {
      infor.push({
      	Name: name.innerText,
        Price: price.innerText,
        Gift: gift.innerText,
        Gift2: gift2.innerText,
        Gift3: gift3.innerText,
        Gift4: gift4.innerText,
        Gift5: gift5.innerText,
        Gift6: gift6.innerText,
        Gift7: gift7.innerText
      });
    });
    return infor;
  });
  console.log(model);
   await browser.close();
})();

嗨,伙计,我需要一些帮助! 我做了一个项目,但我不知道如何导出excel??有人知道怎么出口吗?? 我做了研究,但我仍然没有在 google 中找到任何有用的东西。我希望我能在这里找到它:D p/s:我的英语不是我的母语。谢谢你的时间!!

【问题讨论】:

  • 嗨,你想把model导出到excel文件吗?
  • 是的,兄弟.. 我不知道如何导出这个“const 模型”

标签: node.js web-crawler


【解决方案1】:

如果你想写入一个excel文件,你可以使用excel4node,根据你发布的代码,你正在使用csv-write-stream写入一个csv文件,我已经添加了这两个函数,检查一下

const puppeteer = require('puppeteer');
const fs = require('fs');
var csvWriter = require('csv-write-stream');
var writer = csvWriter({ sendHeaders: false });
var xuat = "xuat.csv";
// Require excel library
var excel = require('excel4node');

// writing to xlsx
function exportToExcel(data) {
    // Create a new instance of a Workbook class
    var workbook = new excel.Workbook();

    // Add Worksheets to the workbook
    var worksheet = workbook.addWorksheet('Sheet 1');

    const headings = ['Name', 'Price', 'Gift', 'Gift2', 'Gift3', 'Gift4', 'Gift5', 'Gift6', 'Gift7'];;

    // Writing from cell A1 to I1
    headings.forEach((heading, index) => {
        worksheet.cell(1, index + 1).string(heading);
    })

    // Writing from cell A2 to I2 , A3 to I3, .....
    data.forEach((item, index) => {
        worksheet.cell(index + 2, 1).string(item.Name);
        worksheet.cell(index + 2, 2).string(item.Price);
        worksheet.cell(index + 2, 3).string(item.Gift);
        worksheet.cell(index + 2, 4).string(item.Gift2);
        worksheet.cell(index + 2, 5).string(item.Gift3);
        worksheet.cell(index + 2, 6).string(item.Gift4);
        worksheet.cell(index + 2, 7).string(item.Gift5);
        worksheet.cell(index + 2, 8).string(item.Gift6);
        worksheet.cell(index + 2, 9).string(item.Gift7);
    });

    workbook.write('Excel.xlsx');
}

// writing to csv
function exportToCSV(data) {
    writer.pipe(fs.createWriteStream(xuat))
    // writing the headings to the first row
    const firstRow = ['Name', 'Price', 'Gift', 'Gift2', 'Gift3', 'Gift4', 'Gift5', 'Gift6', 'Gift7'];
    writer.write(firstRow);
    // writing the values from the second row
    data.forEach((item, index) => {
        writer.write(item);
    });
    writer.end()
}

(async () => {
    const browser = await puppeteer.launch({ headless: false })
    const page = await browser.newPage()
    await page.goto("https://www.nguyenkim.com/tv-qled-samsung-65-inch-qa65q65rakxxv.html")

    const model = await page.evaluate(() => {
        let location = document.querySelectorAll(".bg-Pro")
        let name = document.querySelector(".product_info_name")
        let price = document.querySelector(".nk-price-final")
        let gift = document.querySelector(".cm-picker-product-options div:first-child")
        let gift2 = document.querySelector(".cm-picker-product-options div:nth-child(2)")
        let gift3 = document.querySelector(".cm-picker-product-options div:nth-child(3)")
        let gift4 = document.querySelector(".cm-picker-product-options div:nth-child(4)")
        let gift5 = document.querySelector(".cm-picker-product-options div:nth-child(5)")
        let gift6 = document.querySelector(".cm-picker-product-options div:nth-child(6)")
        let gift7 = document.querySelector(".cm-picker-product-options div:nth-child(7)")
        let infor = []
        location.forEach((item) => {
            infor.push({
                Name: name.innerText,
                Price: price.innerText,
                Gift: gift.innerText,
                Gift2: gift2.innerText,
                Gift3: gift3.innerText,
                Gift4: gift4.innerText,
                Gift5: gift5.innerText,
                Gift6: gift6.innerText,
                Gift7: gift7.innerText
            });
        }); return infor;
    });
    console.log(model);
    exportToExcel(model);
    exportToCSV(model);
    await browser.close();
})();

【讨论】:

  • 你能说出什么库可以循环 goto() 的 URL 吗?它如何更新现有的excel?我没有循环,但似乎只需要最后一个网址就可以了..
猜你喜欢
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 2012-04-02
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
相关资源
最近更新 更多