首页 > 解决方案 > 如何写入文本文件Javascript?

问题描述

我正在尝试将 webScrape 写入文本文件,但它不起作用。文本文件一遍又一遍地说是对象。任何帮助将不胜感激,我对这种类型的编程相对较新,而且我是空白的!

编辑:我现在可以使用文本文件,但我想知道如何在添加每行数据后换行。

 const axios = require('axios');
const cheerio = require('cheerio');
const camelCase = require('camelcase'); // added this for readale properties
const fs = require('fs') 

// use async / await feature
async function scrape(url) {

    // get html page
    const { data } = await axios.get(url);

    // convert html string to cheerio instance
    const $ = cheerio.load(data);

    // query all list items
    return $('.tabular-data-panel > ul')
        // convert cheerio collection to array for easier manipulation
        .toArray()
        // transform each item into proper key values
        .map(list => $(list)
            // query the label element
            .find('.panel-row-title')
            // convert to array for easier manipulation
            .toArray()
            // use reduce to create the object
            .reduce((fields, labelElement) => {
                // get the cheerio instance of the element
                const $labelElement = $(labelElement);
                // get the label of the field
                const key = $labelElement.text().trim();
                // get the value of the field
                const value = $labelElement.next().text().trim();
                // asign the key value into the reduced object
                // note that we used camelCase() to make the property easy to read
                fields[camelCase(key)] = value;
                // return the object
                return fields;
            }, {})
        );

}

async function main() {
    const url = 'https://www.lseg.com/resources/1000-companies-inspire/2018-report-1000-companies-uk/search-1000-companies-uk-2018?results_per_page=100';
    const companies = await scrape(url);

    fs.writeFile('Output.txt', companies, (err) => { 

        if (err) throw err; 
        console.log('it/s done')
    })

    console.log(companies);
}



main();

标签: javascriptweb-scraping

解决方案


函数的结果scrape(url)似乎就像一个数组。你可以JSON.stringify把结果变成字符串。或者,您也可以只使用join()

// ...
const companies = await scrape(url).then(data => JSON.stringify(data))

或者

const companies = await scrape(url).then(data => data.join('\n'))

推荐阅读