2017-02-10 4 views
-1

Я пытаюсь получить состояние цены и запаса из некоторых магазинов Walmart с пакетом rvest с помощью расширения Gigget Selector. Я смог получить адрес магазина, но не смог получить цену и состояние запасов. Любое предложение будет оценено!Получить цену от Walmart с rvest

Вот что я сделал до сих пор

library(dplyr) 
    library(rvest) 

    url <- read_html("http://www.walmart.com/store/25/search?query=50636282") 

    selector_name<-".cs-secondary-copy" 
    fnames <- html_nodes(x = url, css = selector_name) %>% 
     html_text() 
    fnames 

    price <- html_nodes(x = url, css = ".sup") %>% 
     html_text() %>% 
     as.numeric() 
    price 

    stock <- html_nodes(x = url, css = ".stockStatus-unavailable") %>% 
     html_text() 
    stock 

Выходные

> fnames 
    [1] "4820 S Clark St, Mexico, MO 65265"     "Item availability is updated every day at midnight." 
    > price 
    numeric(0) 
    > stock 
    character(0) 

Соответствующие данные Selector Gadget

<span class="cs-secondary-copy">4820 S Clark St, Mexico, MO 65265</span> 

     <div class="csTile"> 

     <div class="csTile-img"> 
     <a href="/ip/Virgin-Mobile-LG-Tribute-5-Prepaid-Smartphone/50636282"> 
     <img class="js-cs-image-link" id="43A657WDTF0J" src="https://i5.walmartimages.com/asr/51a2cea5-abe4-4a03-9711-b995cb7e215f_1.fd7b362cc57347042f4b518ff05de7ec.jpeg?odnHeight=180&amp;odnWidth=180&amp;odnBg=ffffff" alt="Virgin Mobile LG Tribute 5 Prepaid Smartphone" width="144" height="144"> 
     </a> 
     </div> 

     <div class="csTile-content"> 
     <div class="csTile-stockStatus"> 
     <strong class="stockStatus-unavailable"> 
     Out of Stock 
    </strong> 
     </div> 
     <div class="price-display csTile-price"> 
     <p class="csTile-disclaimer">Store Price</p> 
     <span class="sup">$</span>15<span class="currency-delimiter">.</span><span class="sup">00</span> 
     </div> 

     <p class="csTile-heading js-cstile-heading"><span> 
     Virgin Mobile LG Tribute 5 Prepaid Smartphone 
    </span><div class="js-truncate-disclosure-arrow truncate-disclosure-arrow"></div></p> 
     <div class="csTile-rating"> 
     <span class="stars stars-small"> 
     <i class="star star-rated"></i><i class="star star-rated"></i><i class="star star-rated"></i><i class="star star-rated"></i><i class="star star-partial"></i><span class="visuallyhidden">4.5 stars</span> 
     <span class="visuallyhidden">Average rating: 4.4375 stars</span> 
     <span class="stars-reviews stars-reviews--grey">16 
    <span class="visuallyhidden">ratings</span> 
     </span> 
     </span> 
     </div> 
     <a class="btn btn-inverse l-margin-top js-cs-product-link" id="43A657WDTF0J" href="/ip/Virgin-Mobile-LG-Tribute-5-Prepaid-Smartphone/50636282"> 
     Buy online 
    </a> 
     </div> 

     </div> 
+1

То, что вы пытаетесь извлечь, создается динамически с помощью javascript, поэтому вы не сможете его собрать до тех пор, пока не будет запущен javascript (что-то, что можно сделать с помощью браузера без использования браузера). Легкий способ увидеть это в том, что 'html_nodes (x = url, css =" .sup ")' - пустой набор узлов (поскольку он еще не создан!), Иначе вы можете загрузить URL-адрес в своем браузере, но отключить javascript, чтобы увидеть, действительно ли элемент, который вы хотите, в html или нет. Подробнее о решении безгласного браузера: http://stackoverflow.com/questions/26631511/scraping-javascript-website-in-r – Chrisss

+0

Спасибо @Chrisss! Это объясняет это – Tung

+0

Слишком плохо об условиях использования. Я надеялся сделать что-то подобное с ценовой информацией. К сожалению нет. –

ответ

3

https://help.walmart.com/app/answers/detail/a_id/8#2

Вам запрещается:

  • Нарушение или попытка нарушения безопасности объектов Walmart;
  • Использование любого устройства, программного обеспечения или рутины для вмешательства или попытки помешать правильной работе сайтов Walmart ; или
  • Использование или попытка использовать любой двигатель, программное обеспечение, инструмент, средство или другое устройство или механизм (кроме поисковых механизмов , предусмотренных Walmart или других сторонних веб-браузеров) для навигации или искать Walmart сайтов.

(курсив мой). Флаг закрывается как несанкционированный.

+0

Спасибо за информацию! Не знал об этом – Tung

Смежные вопросы