我倒過相關的問題無濟於事。我需要根據我指定的日期和小時從ASP.NET網頁(http://www.spp.org/LIP.asp)中刮取價格信息表。我很滿意並想使用R.我的基本絆腳石是URL不反映搜索參數,它是靜態的,我也不知道如何在ASP.NET中使用Javascript提交HTML表單現場。使用R按鈕從ASP.NET網頁中刮取表格
我查看了上面URL的源代碼。我發現在iframe中有一個鏈接指向另一個'源數據'頁面:http://www.spp.org/LIPPosting/LIP.aspx。我嘗試在R基於這個StackOverflow線程做一個POST請求:What if I want to web scrape with R for a page with parameters?。
##ASP.NET site scrape
forms = getHTMLFormDescription("http://www.spp.org/LIPPosting/LIP.aspx")
# Name the list for easy reference
names(forms)='spp'
# Use the createFunction tool so I can submit a search
fun = createFunction(forms$spp, verbose=T)
# Submit an HTML form looking for data using all form defaults
# Except change the hour to '03'
results <- fun(ddlHour = '03')
# Grab the table results from the HTML based on its id tag
tableData <- getNodeSet(htmlParse(results), "//*/table[@id = 'dgLIP']")
readHTMLTable(tableData[[1]])
HTML結果顯示在'小時'表單元素中,我確實選擇了'03'。
<td style="height: 42px; width: 77px;">
<span id="lblLIPHour">Hour</span><br><select name="ddlHour" id="ddlHour"><option value="1">01</option>
<option value="2">02</option>
<option selected value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
然而,這一請求沒有得到傳遞給服務器,因爲當我看看實際的結果見表是當前時間,而不是「03」。
> readHTMLTable(tableData[[1]])
Publish Date Price Date PNode Price Parent PNode Settlement Location
1 201402281552 201402281600 AECI 23.45 AECI AECI
2 201402281552 201402281600 AMRN 23.45 AMRN AMRN
3 201402281552 201402281600 BLKW 23.45 BLKW BLKW
4 201402281552 201402281600 CLEC 23.45 CLEC CLEC
5 201402281552 201402281600 CSWS_AECC_LA 23.45 CSWS_AECC_LA AECC_CSWS
此外,我只能得到從服務器返回的頁面的HTML,它不包含所有的結果。實際上,該頁面底部有JavaScript箭頭按鈕,可讓我在網頁中選中所有結果。
在網頁本身,要從下拉菜單中選擇後查看結果,我必須點擊'查看'按鈕。有沒有一種方法可以在R中複製這個以獲取我的'03'參數作爲查詢發送到服務器以將新的HTML返回到網頁?
如果我能做到這一點,我可以寫些東西來「推」頁面箭頭。
我希望別人會給你一個更樂觀的理由,但我的建議是不要做它。在selenium驅動程序中使用python,即使你事先不知道python也會容易得多。我說這是一個熱愛R並試圖將其用於一切的人,但在這種情況下,我認爲這不是適合工作的正確工具。 – Ista
謝謝Ista ......在進入這個小小的泡菜之前,我從來沒有聽說過硒。你認爲他們在通過jdharrison建議的R包使用Python驅動程序方面是一個優勢嗎? – sclarky