Я пытаюсь узнать цену товара на 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);
}
После этого цены на груз не доходят до консоли.Где место, где я ошибаюсь?