2017-04-11 18 views
-2

私はstackoverflowの上のいくつかのようなエントリを見て持っていたthe usda export sales query system.R引っかきASPXウェブサイト

からデータをこすりしようとしていますが、この1つは、フォームが持って後に、ウェブサイトのURLが変わらないという意味でユニークです投稿されました。

rvest、httr、およびRcurlを無駄に使用しようとしました。私の目標は、2000年1月1日から最新のデータまでのすべての商品およびすべての国のデータを削ることです。

ご協力いただきますようお願い申し上げます。 rvestを使用して

答えて

0

が、私は次のようにします。

session <- html_session("https://apps.fas.usda.gov/esrquery/esrq.aspx") 
form <- html_form(session)[[1]] 

をフォームには、私はそれが少し読みやすくするためにビューステートとEVENTVALIDATIONを切り捨ててきた上で、この

<form> 'aspnetForm' (POST esrq.aspx) 
<input hidden> '__VIEWSTATE': ... <truncated> 
<input hidden> '__VIEWSTATEGENERATOR': 41AA5B91 
<input hidden> '__EVENTVALIDATION': ... <truncated> 
<select> 'ctl00$MainContent$lbCommodity' [1/44] 
<select> 'ctl00$MainContent$lbCountry' [1/196] 
<select> 'ctl00$MainContent$ddlReportFormat' [1/4] 
<input checkbox> 'ctl00$MainContent$cbxSumGrand': 
<input checkbox> 'ctl00$MainContent$cbxSumKnown': 
<input radio> 'ctl00$MainContent$rblOutputType': 0 
<input radio> 'ctl00$MainContent$rblOutputType': 1 
<input radio> 'ctl00$MainContent$rblOutputType': 2 
<input text> 'ctl00$MainContent$tbStartDate': 03/30/2017 
<input image> 'ctl00$MainContent$ibtnStart': 
<input text> 'ctl00$MainContent$tbEndDate': 03/30/2017 
<input image> 'ctl00$MainContent$ibtnEnd': 
<input button> '': Help - Marketing Year 
<input radio> 'ctl00$MainContent$rblColumnSelection': regular 
<input radio> 'ctl00$MainContent$rblColumnSelection': weekly_exports 
<input radio> 'ctl00$MainContent$rblColumnSelection': net_sales_cmy 
<input radio> 'ctl00$MainContent$rblColumnSelection': ob_cmy 
<input radio> 'ctl00$MainContent$rblColumnSelection': ob_nmy 
<input hidden> '': 
<input hidden> '': 
<input submit> 'ctl00$MainContent$btnSubmit': Submit 

のように見えます。 3つのラジオボタンが

'ctl00$MainContent$rblOutputType' 

同じ名前であることに注意してください、私は私が

filledform <- set_values(form, 
       `ctl00$MainContent$lbCommodity` = "Corn", 
       `ctl00$MainContent$lbCommodity` = "ALL COUNTRIES", 
       `ctl00$MainContent$tbStartDate` = "07/30/2016", 
       `ctl00$MainContent$tbEndDate` = "03/30/2017") 
を使用して値を設定し2016年7月30日から2017年3月30日に開始するすべての国とコーンを選択するとします

私は開始日が所望の値が、商品とCOUNTRに変更されたことを確認することができますここで私はこれを取得埋めフォーム(ビューステートとEVENTVALIDATION切り捨て)

<form> 'aspnetForm' (POST esrq.aspx) 
<input hidden> '__VIEWSTATE': ... <truncated> 
<input hidden> '__VIEWSTATEGENERATOR': 41AA5B91 
<input hidden> '__EVENTVALIDATION': ... <truncated> 
<select> 'ctl00$MainContent$lbCommodity' [1/44] 
<select> 'ctl00$MainContent$lbCountry' [1/196] 
<select> 'ctl00$MainContent$ddlReportFormat' [1/4] 
<input checkbox> 'ctl00$MainContent$cbxSumGrand': 
<input checkbox> 'ctl00$MainContent$cbxSumKnown': 
<input radio> 'ctl00$MainContent$rblOutputType': 0 
<input radio> 'ctl00$MainContent$rblOutputType': 1 
<input radio> 'ctl00$MainContent$rblOutputType': 2 
<input text> 'ctl00$MainContent$tbStartDate': 07/30/2016 
<input image> 'ctl00$MainContent$ibtnStart': 
<input text> 'ctl00$MainContent$tbEndDate': 03/30/2017 
<input image> 'ctl00$MainContent$ibtnEnd': 
<input button> '': Help - Marketing Year 
<input radio> 'ctl00$MainContent$rblColumnSelection': regular 
<input radio> 'ctl00$MainContent$rblColumnSelection': weekly_exports 
<input radio> 'ctl00$MainContent$rblColumnSelection': net_sales_cmy 
<input radio> 'ctl00$MainContent$rblColumnSelection': ob_cmy 
<input radio> 'ctl00$MainContent$rblColumnSelection': ob_nmy 
<input hidden> '': 
<input hidden> '': 
<input submit> 'ctl00$MainContent$btnSubmit': Submit 

を表示しますyの値は設定されていません。私は

session1 <- submit_form(session, filledform) 

で満たされたフォームを送信すると、私はメッセージこれらの三つの形であること

Submitting with 'ctl00$MainContent$rblOutputType'. 

リコールを受けます。テーブルをお探しの場合

table <- session1 %>% html_nodes("table") 

は必要な結果を得ていません。私が持っている

が満たされたフォームを使用し、これは上記と同じメッセージが表示されます。この

session1 <- submit_form(
      session, 
      form, 
      `ctl00$MainContent$lbCommodity` = "Corn", 
      `ctl00$MainContent$lbCommodity` = "ALL COUNTRIES", 
      `ctl00$MainContent$rblOutputType` = "Browser", 
      `ctl00$MainContent$tbStartDate` = "07/30/2016", 
      `ctl00$MainContent$btnSubmit` = "Submit" 
      ) 

ようsubmit_form関数の値を設定しないことにより、他のウェブサイトでの成功を持っています。結果には依然として目的のテーブルが含まれていません。

ここで何か問題がありますか?

関連する問題