2017-11-06 3 views
0

ウェブページからデータをスクレイピングするときに、いくつかの要素/値は返されません。R:ウェブページをスクレイピングする際の値の紛失

具体的には、rvestパッケージを使用してスクラップします。

私が欲しい情報が含まれているウェブページはhttps://azure.microsoft.com/en-us/pricing/details/virtual-machines/windows/ですが、データをスクラップすると、価格の列は "$ - "だけを返します。

サンプルコード:最初のDFの

library(rvest) 

webpage <- read_html("https://azure.microsoft.com/en-us/pricing/details/virtual-machines/windows/") 
tbls <- html_nodes(webpage, "table") 

tbls_ls <- webpage %>% 
    html_nodes("table") %>% 
    .[1:(length(tbls)-2)] %>% 
    html_table() 

出力:

> List of 22 $ :'data.frame': 7 obs. of 6 variables: ..$ Instance 
> : chr [1:7] "B1L" "B1S" "B2S" "B1MS" ... ..$ Cores     
> : int [1:7] 1 1 2 1 2 4 8 ..$ RAM         
> : chr [1:7] "0.50 GiB" "1.00 GiB" "4.00 GiB" "2.00 GiB" ... ..$ 
> Temporary Storage       : chr [1:7] "1 GiB" "2 
> GiB" "8 GiB" "4 GiB" ... ..$ Price         
> : chr [1:7] "$-" "$-" "$-" "$-" ... ..$ Prices with Azure Hybrid 
> Benefit1 (% savings): chr [1:7] "$-" "$-" "$-" "$-" ... 

私はこれらの特定の要素の全体の値を取得するために何ができますか?

答えて

0

これらは、フィルタに関係なく価格データが1セットあります。その属性の値をとり、jsonを解析する必要があります。

library(rvest) 

webpage <- read_html("https://azure.microsoft.com/en-us/pricing/details/virtual-machines/windows/") 
tbls <- html_nodes(webpage, "table") 

webpage %>% 
    html_nodes("table") %>% 
    .[1:(length(tbls)-2)] %>% 
    html_table() 


ss <- webpage %>% html_nodes("table span.price-data ") %>% xml_attr('data-amount') 

lapply(ss,function(x){data.frame(jsonlite::fromJSON(x))}) 

出力例:

[[176]] 
    regional.asia.pacific.southeast regional.australia.east regional.canada.central regional.canada.east 
1       1.496     1.496     1.376    1.376 
    regional.europe.west regional.japan.east regional.united.kingdom.south regional.us.east.2 regional.usgov.virginia 
1    1.488    1.464       1.448    1.373     1.504 
    regional.us.west regional.us.west.2 
1   1.376    1.248 

[[177]] 
    regional.asia.pacific.southeast regional.australia.east regional.canada.central regional.canada.east 
1       4.464     4.464     4.224    4.224 
    regional.europe.west regional.japan.east regional.united.kingdom.south regional.us.east.2 regional.usgov.virginia 
1    4.448     4.4       4.368    4.365     4.48 
    regional.us.west regional.us.west.2 
1   4.224    3.968 

あなたがその特定の値と一致し、このことから価格を取る必要があります。

+0

ありがとうございます - それは魅力的に機能しました。しかし、あなたは多分直感を分かち合うことができますか?私はjsonファイルがあることを検出しているように見えませんが、どこにそれが見えますか? –

+0

いいえ、jsonファイルはありません。ちょうどjsonデータです。価格のために削ったデータが表示されていれば、json構造に似たキーと値のペアの中かっこで囲まれたデータが表示されます。 – amrrs

+0

ああ、今私はそれを参照してください。各地域の各価格シナリオの列を希望する場合はどうすればよいですか?つまり、PriceScenarioA.RegionX、PriceScenarioA.RegionY、PriceScenarioB.RegionX、PriceScenarioB.RegionYソート? –

関連する問題