1

初めて RCurl を使用して、Web サイトのフォームにデータを入力します。ドロップダウン リストから特定のオプションを選択してフォームを送信できるようにする必要があります。トリッキーな部分は、ウェブサイトがその前に別のページから誘導されていることです. 具体的には、フォームを投稿しようとしているページの URL を以下に示します。

http://energyalmanac.ca.gov/petroleum/fuels_watch/page2.php

ご覧のとおり、このページはオプションを入力する前の別のページから誘導されているため、ドロップダウン リストに使用できるオプションはありません。前のページのデータを手動で入力し、入力された値を調べると、ドロップダウン リストの値が毎週 1 ずつ増加することがわかりました。現在、たとえば、その値は 1091 です。この値は、入力フィールド「PkID」に割り当てる必要があります。ただし、他の StackOverflow の質問を見て postForm 関数を読んでも、フォームにデータを入力して次のページに進むことができません。

私の質問は、コードに値が正しく投稿されていない何かが欠けているのでしょうか? または、その URL を入力しても、ドロップダウン リストに使用可能なオプションがないため、コードが機能していません。

以下は私が持っているコードです。私の説明が明確でない場合は、お詫び申し上げます。

postForm("http://energyalmanac.ca.gov/petroleum/fuels_watch/page2.php",
    'PkID' = '1091', style = "post")

どんな助けでも大歓迎です!

4

1 に答える 1

2

どの s を入力する必要があるかを知るために、MonthおよびYearパラメータをに投稿する必要があります。その後、それらを取得して に投稿し、実際のデータを含むページにアクセスできます。http://energyalmanac.ca.gov/petroleum/fuels_watch/page2.phpPkIDhttp://energyalmanac.ca.gov/petroleum/fuels_watch/output.php

 > library(RCurl)
 > library(XML)
 > form <- postForm("http://energyalmanac.ca.gov/petroleum/fuels_watch/page2.php", Year = 1995, Month = 2)                                                                                                                                   
 > doc <- htmlParse(form)                                                                                                                                                                                                                    
 >                                                                                                                                                                                                                                           
 > pkids <- xpathSApply(doc, "//select[@name = 'PkID']/option", xmlAttrs)                                                                                                                                                                    
 > pkids                                                                                                                                                                                                                                     
 value value value value
 "162" "163" "164" "165"
 >                                                                                                                                                                                                                                           
 > data <- lapply(pkids, function(x) {                                                                                                                                                                                                       
    form <- postForm(uri = "http://energyalmanac.ca.gov/petroleum/fuels_watch/output.php", PkID = x)                                                                                                                                         
    htmlParse(form)                                                                                                                                                                                                                          
    })                                                                                                                                                                                                                                       
 >                                                                                                                                                                                                                                           
 > tab <- readHTMLTable(data[[1]], which = 1)                                                                                                                                                                                                
 R> head(tab)                                                                                                                                                                                                                                 
                                   02/03/1995 01/27/1995 Percent\n        Change
 1                  Refinery Input       <NA>       <NA>                    <NA>
 2                       Crude Oil      10965      11271                   -2.7%
 3                                       <NA>       <NA>                    <NA>
 4             Refinery Production       <NA>       <NA>                    <NA>
 5                 Motor Gasoline:       <NA>       <NA>                    <NA>
 6 CARB RFG (incl. Non-Oxygenated)       3049       2482                   22.8% ...
于 2013-11-05T18:06:18.590 に答える