2

rvestパッケージを使用して、Web ページからガソリン価格を取得したいと考えています。ただし、数値をプルすることはできず、html クラスでプルする必要があります.sp_p

library(rvest)
desmoines <- html("http://www.desmoinesgasprices.com/")

プルガス価格:

price <- desmoines %>%
  html_nodes(".sp_p")

head(price, 3)

出力:

[[1]]
<div class="sp_p">
  <div class="p2"></div>
  <div class="pd"></div>
  <div class="p5"></div>
  <div class="p5"></div>
</div> 

[[2]]
<div class="sp_p">
  <div class="p2"></div>
  <div class="pd"></div>
  <div class="p5"></div>
  <div class="p6"></div>
</div> 

[[3]]
<div class="sp_p">
  <div class="p2"></div>
  <div class="pd"></div>
  <div class="p5"></div>
  <div class="p7"></div>
</div> 

attr(,"class")
[1] "XMLNodeSet"

stringr今、パッケージを使用してWebスクレイプから数字を抽出したいのですが、原子ベクトルではないstringrため使用できません。priceどうすればこれを回避できますか?

4

1 に答える 1

3

1 つの可能性を次に示します。

library(stringr)
pr <- xml_children(price)
p_raw <- sapply(1:length(pr), function(x) paste(xml_attrs(pr[[x]]),collapse=""))
p_readable <- paste0("$",str_replace_all(p_raw,c("d"=".","p"="")))

#> p_readable
# [1] "$2.49" "$2.57" "$2.59" "$2.59" "$2.59" "$2.59" "$2.59" "$2.59" "$2.61" "$2.64" "$2.67" "$2.68" "$2.68"
#[14] "$2.68" "$3.08" "$2.99" "$2.98" "$2.98" "$2.98" "$2.98" "$2.98" "$2.98" "$2.98" "$2.98" "$2.98" "$2.98"
#[27] "$2.98" "$2.98" "$2.98"
于 2015-06-25T08:02:01.900 に答える