Я пытаюсь получить некоторые данные о ценах и весе доставки, чтобы рассчитать стоимость доставки своих товаров, в данном случае я использую Amazon. Я попытался использовать NodeJS и создать API, чтобы я мог подключить его к интерфейсу для простоты использования, но каким-то образом он не возвращает элемент, даже если элемент явно существует, и он работает в Python, как вы будете см. ниже ...
Вот мой код NodeJS, ради этого вопроса я поместил ссылку AMD Ryzen в качестве URL:
const cheerio = require('cheerio');
const request = require('request');
const url = `https://www.amazon.com/AMD-Ryzen-Processor-Wraith-Cooler/dp/B07B428M7F/ref/=sr_1_2/?ie\=UTF8\&qid\=1540883858\&sr\=8-2\&keywords\=amd`;
request(url, (error, response, body) => {
if(error) console.log(error);
let $ = cheerio.load(body);
console.log($('#priceblock_ourprice').text()); // Returns an empty line, even though it works in Python.
});
А вот мой Python-код, который работает:
import requests, urllib, sys
from pyquery import PyQuery as pq
d = pq(url="https://www.amazon.com/AMD-Ryzen-Processor-Wraith-Cooler/dp/B07B428M7F/ref/=sr_1_2/?ie\=UTF8\&qid\=1540883858\&sr\=8-2\&keywords\=amd")
print(d('#priceblock_ourprice').text()) # Returns $309.89 as expected.
Он использует тот же URL, но все равно возвращает элемент, как и ожидалось, я даже пытался использовать разные модули запросов для NodeJS, но результат тот же, может ли быть проблема с Cheerio? Любые входные данные приветствуются.