Приветствие / узел.JS — извлечение элемента

#javascript #jquery #node.js #web-scraping #cheerio

#javascript #jquery #node.js #очистка веб-страниц #приветствие

Вопрос:

Попытка очистить элемент price на этой странице:

http://us.asos.com/asos/asos-bomber-jacket-in-khaki/prd/5773457?iid=5773457amp;affid=14174amp;channelref=product searchamp;mk=abcamp;currencyid=2amp;gclid=CIvXk9DEt88CFYpehgodLo0Ivg

Не удалось ничего получить при запуске console.log , какие-либо предложения? Я проверил, что я выбираю правильный элемент.

 var request = require('request');
var cheerio = require('cheerio');

var url = 'http://us.asos.com/asos/asos-bomber-jacket-in-khaki/prd/5773457?iid=5773457amp;affid=14174amp;channelref=product searchamp;mk=abcamp;currencyid=2amp;gclid=CIvXk9DEt88CFYpehgodLo0Ivg';

request(url , function(error, response, html) {
if (!error amp;amp; response.statusCode == 200) {
    var $ = cheerio.load(html); 


    $('span.current-price').each(function(i, element){
        console.log($(this).text());

    })
  

Ответ №1:

current-price Я вижу в этом HTML следующее:

 <div class="current-price">
  

Итак, $('span.current-price') не будет соответствовать этому.

Вам нужно:

 $('div.current-price')
  

или просто

 $('.current-price')
  

Комментарии:

1. Хм, похоже, для меня это все еще не работает. Ниже приведен элемент, который я пытаюсь удалить, похоже, он все еще находится внутри, но, возможно, я что-то упускаю.<span> <span data-id="current-price" data-bind="text: priceText(), css: {'product-price-discounted' : isDiscountedPrice }" class="current-price">$49.00</span>

2. @kmpace — Я не вижу этого элемента в необработанном HTML страницы, на которую вы ссылались. Он находится в DOM после загрузки страницы в браузер, но не в исходном исходном коде страницы, поэтому он должен добавляться с помощью Javascript. Cheerio просматривает только НЕОБРАБОТАННЫЙ HTML, поэтому он его не видит.