我试图从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"
)
这给出与上面相同的消息在其他网站上的成功。结果仍不包含所需的表格。
我在这里做错了什么?