Я пытаюсь получить состояние цены и запаса из некоторых магазинов 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&odnWidth=180&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>
То, что вы пытаетесь извлечь, создается динамически с помощью javascript, поэтому вы не сможете его собрать до тех пор, пока не будет запущен javascript (что-то, что можно сделать с помощью браузера без использования браузера). Легкий способ увидеть это в том, что 'html_nodes (x = url, css =" .sup ")' - пустой набор узлов (поскольку он еще не создан!), Иначе вы можете загрузить URL-адрес в своем браузере, но отключить javascript, чтобы увидеть, действительно ли элемент, который вы хотите, в html или нет. Подробнее о решении безгласного браузера: http://stackoverflow.com/questions/26631511/scraping-javascript-website-in-r – Chrisss
Спасибо @Chrisss! Это объясняет это – Tung
Слишком плохо об условиях использования. Я надеялся сделать что-то подобное с ценовой информацией. К сожалению нет. –