Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使数据显示在Node.js中的CSV文件中?_Javascript_Node.js_Web Scraping_Puppeteer - Fatal编程技术网

Javascript 如何使数据显示在Node.js中的CSV文件中?

Javascript 如何使数据显示在Node.js中的CSV文件中?,javascript,node.js,web-scraping,puppeteer,Javascript,Node.js,Web Scraping,Puppeteer,我正在尝试使此函数生成的数据显示在我的CSV文件中。但是,当它创建CSV文件时,没有数据,它是一个空白的CSV文档。有什么建议吗 const fs = require('fs'); const csv = await page.$$eval('.product_desc_txt', function(products){ // Iterate over product descriptions let csvLines = products.map(function(product

我正在尝试使此函数生成的数据显示在我的CSV文件中。但是,当它创建CSV文件时,没有数据,它是一个空白的CSV文档。有什么建议吗

const fs = require('fs');

const csv = await page.$$eval('.product_desc_txt', function(products){

 // Iterate over product descriptions
    let csvLines = products.map(function(product){

    // Inside of each product find product SKU and its price
        let productId = product.querySelector("div.product_desc_txt > div.body-copy.custom-body-copy").innerText.trim();
        let productPrice = product.querySelector("span[data-wishlist-linkfee]").innerText.trim();

    // Format them as a csv line
        return `${productId};${productPrice}`;
    });
     // Join all lines into one file
     return csvLines.join("\n");
     });
        fs.writeFileSync("test.csv", csv);

});
这是源代码,它基本上是重复自己一遍又一遍,不同的项目编号和价格。我只需要商品编号和价格。绕过

<div class="list-tbl">
            <div class="row" data-body-header>
                <div class="col-xs-12">
                    <div class="split-line split-line-header-gap">
                        <div class="row">
                            <div class="col-xl-1 col-lg-1 col-md-1 col-sm-1 col-xs-2 body-copy">
                                   <div class="style-check">
                                        <input type="checkbox" id = "selectall" name="selectall" value="279114616" class="selectall">
                                        <label for="selectall">
                                            <span>All</span>
                                        </label>
                                   </div>
                             </div>
                             <div class="col-xl-1 col-lg-1 col-md-2 col-sm-3 col-xs-4 body-copy"></div>
                             <div class="col-xl-3 col-lg-3 col-md-3 col-sm-4 col-xs-6 body-copy">
                                <span class="hidden visible-lg  visible-xl">Item</span>
                             </div>
                             <div class="col-xl-2 col-lg-2 text-right body-copy hidden visible-xl">
                                Price
                             </div>
                             <div class="col-xl-1 body-copy hidden visible-xl"></div>
                             <div class="col-xl-1 col-lg-1 col-md-2 body-copy hidden visible-xl visible-lg">
                                Quantity
                             </div>
                             <div class="col-xl-3 col-lg-4 col-md-4 body-copy hidden visible-xl visible-lg visible-md"></div>
                        </div>
                    </div>
                 </div>
            </div>
            <input type="hidden" id="isBDAppVar"  value="BD" />

                        <input type="hidden" class="orderItem-2000423036" value="237459854"/>

                <div class="row item-row" id = "2000423036" data-body-row>
                     <div class="col-xs-12">
                     <div class="split-line split-line-gap">
                         <div class="row">

                                    <div class="col-xl-1 col-lg-1 col-md-1 col-sm-1 col-xs-2">

                                          <div class="style-check marg_chk">
                                                <input type="checkbox" class="checkbox" name="select" id ="select_0" value="0">
                                               <label for="select_0">
                                                <span class="hide">
                                                Select&nbsp;
                                                Item
                                                </span>
                                               </label>
                                            </div>

                                    </div>

                                    <div class="col-xl-1 col-lg-1 col-md-2 col-sm-3 col-xs-4">
                                        <div class="product-img-holder">

                                                    <img class="img-responsive prod-image-coming-soon" title="Pringles Snack Pack Potato Crisps, Original, 0.67 oz, 60 ct"
                                                        src="https://images.costcobusinessdelivery.com/ImageDelivery/imageService?profileId=12028466&imageId=1055688__1&recipeName=350" 
                                                        onerror="this.onerror='';this.src='/wcsstore/CostcoGLOBALSAS/images/prod-image-coming-soon.svg';this.alt='Product Image Coming Soon'" 
                                                         alt="Shoping List Product Image" />

                                        </div>
                                    </div>
                                    <!-- price + linkfee based on region -->
<div class="col-xl-3 col-lg-3 col-md-6 col-sm-8 col-xs-6">
    <div class="product_desc_txt">

        <a href=" https://www.costcobusinessdelivery.com/.product.1055688.html " class="body-copy-link">
            Pringles Snack Pack Potato Crisps, Original, 0.67 oz, 60 ct
        </a>
        <div class="body-copy custom-body-copy">
           Item&nbsp;1055688
        </div>

        <div class="margin_tp_10"></div>

        <div class="body-copy hidden visible-md visible-sm visible-xs visible-lg">

            <span  data-wishlist-linkfee="false" > $15.89</span>

        </div>

    </div>
</div>
<div class="col-xl-2 col-lg-2 body-copy text-right hidden visible-xl ">

    <span  data-wishlist-linkfee="false" > $15.89</span>


</div>

全部的
项目
价格
量
挑选
项目
项目1055688
$15.89
$15.89

您需要将
wait
语句包装在
async
函数中您的
map
函数没有任何意义<代码>产品不是文档,它应该是某种HTML节点。伙计,@JosephCho是对的!我在最初的回答中犯了一个错误,应该是地图内部的
product.querySelector
而不是
document.querySelector
。修正了它,它仍然显示为空,代码在上面,但是当在控制台中运行查询选择器时,它不会使用此选择器显示任何产品。document.queryselectoral(“div.product\u desc\u txt>div.body-copy.custom body copy”),使用此选项可以查找所有div,但列表未优化并显示许多项。