我試圖從the usda export sales query system.[R刮ASPX網站
刮數據我有看的計算器一些類似的項目,但是這一次是在獨特之處在於該網站的網址不變的形式有後已發佈。
我試圖使用rvest,httr和Rcurl無濟於事。我的目標是從所有商品和所有國家(從01/01/2000開始直到最近的數據)中提取數據。
任何幫助將不勝感激。
我試圖從the usda export sales query system.[R刮ASPX網站
刮數據我有看的計算器一些類似的項目,但是這一次是在獨特之處在於該網站的網址不變的形式有後已發佈。
我試圖使用rvest,httr和Rcurl無濟於事。我的目標是從所有商品和所有國家(從01/01/2000開始直到最近的數據)中提取數據。
任何幫助將不勝感激。
使用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"
)
這給出與上面相同的消息在其他網站上的成功。結果仍不包含所需的表格。
我在這裏做錯了什麼?