Почему файлы cookie запроса-обещания не работают? - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь узнать цену товара на amazon.com.В верхней левой части страницы Amazon представляет раздел «Доставить в страну XXX», чтобы узнать цену груза в эту страну.Я выбираю страну для Канады и, по моему мнению, amazon создает куки в браузере.После некоторой проверки настроек Chrome, есть файл cookie с именем csm-hit, значение которого равно tb:s-SSR8495MRZX4TASZBPFJ|1549741920304&t:1549741921521&adb:adblk_yes.Я на 90% уверен, что это файл cookie, в котором хранится информация «Доставить в Канаду».

Чтобы применить это к коду js, я планирую получить цену груза в Канаду:

const fs = require('fs'),
    xlsx = require('node-xlsx');
    request = require('request-promise'),
    cheerio = require('cheerio'),
    constantUrl = 'http://www.amazon.com/gp/product/';

var asinList = [],
    results = [],
    tough  = require('tough-cookie');

let cookie = new tough.Cookie({
    key: "csm-hit",
    value: "tb:s-SSR8495MRZX4TASZBPFJ|1549741920304&t:1549741921521&adb:adblk_yes",
    domain: 'amazon.com',
    httpOnly: true,
    maxAge: 31536000
});

var cookiejar = request.jar();
cookiejar.setCookie(cookie.toString(), 'https://amazon.com');

var opts = {
        uri: "",
        headers: {
            "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
        },
        gzip: true, //Added to fix the issue,
        _disableCookies: false,
        _jar: cookiejar
    };


//Reading Excel File
object = xlsx.parse(__dirname + '/example.xlsx');

//Assigning ASIN codes in Excel file to asinList array
for (var i = 1; i < object[0].data.length; i++) {
    asinList.push(object[0].data[i][2]);
}

//Requesting to Amazon according to ASIN codes
var price;
var sayac = 0;
asinList.forEach(function(elem) {
    opts.uri = constantUrl + elem;
    request(opts)
        .then(function(html){
            var $ = cheerio.load(html);
            price = $('#priceblock_ourprice').text();
            price = price.trim();
            price = price.split('$');
            para = parseFloat(price[1]);
            shPrice = $("#ourprice_shippingmessage span.a-size-base.a-color-secondary").text()

            console.log(elem);
            console.log(para);
            console.log(shPrice);
            console.log("______________");
            console.log("\n");

            results.push({
                "asin": elem,
                "price": para,
                "shippingPrice": shPrice
            });

            if (sayac == 23) {
                finisher();
            }
            sayac++;
        })
        .catch(function(err){
            console.log(err);
        });
});


function finisher(){
    setTimeout(function(){
        console.log(results);
        console.log("Results length : " + results.length);
        console.log("Asin length : " + asinList.length);
    },3000);    
}

После этого цены на груз не доходят до консоли.Где место, где я ошибаюсь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...