2017-04-11 112 views
-2

我試圖從the usda export sales query system.[R刮ASPX網站

刮數據我有看的計算器一些類似的項目,但是這一次是在獨特之處在於該網站的網址不變的形式有後已發佈。

我試圖使用rvest,httr和Rcurl無濟於事。我的目標是從所有商品和所有國家(從01/01/2000開始直到最近的數據)中提取數據。

任何幫助將不勝感激。

回答

0

使用rvest我做了以下內容:

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

的形式如下

<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 

在上面我已經截斷了VIEWSTATE和EVENTVALIDATION讓它多一點可讀性。請注意,有具有相同名稱的三個單選按鈕

'ctl00$MainContent$rblOutputType' 

假設我要選擇所有的國家和玉米從2016年7月30日開始二零一七年三月三十日我使用

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") 
設置的值

查看填寫的表格我得到這個(VIEWSTATE和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 

在這裏我可以看到,起始日期已更改爲需要的值,但商品和COUNTR y值尚未設置。當我提交填好的表格與

session1 <- submit_form(session, filledform) 

我收到消息

Submitting with 'ctl00$MainContent$rblOutputType'. 

回想一下,有這三種形式。尋找表格使用

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

不提供所需的結果。

我有具有通過不使用填充形式並設置在submit_form函數中的值這樣

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" 
      ) 

這給出與上面相同的消息在其他網站上的成功。結果仍不包含所需的表格。

我在這裏做錯了什麼?