我能够从包含新闻的网页中抓取表格
library(XML)
webpage <- "http://www.tradingeconomics.com/calendar"
tables <- readHTMLTable(webpage )
n.rows <- unlist(lapply(tables, function(t) dim(t)[1]))
dfcal <- as.data.frame(tables$calendar)
例如,我如何抓取 2014 年 1 月的新闻? 我可以通过更改按钮设置在网页上执行此操作,但如何在 R 中执行此操作?
还有从 R 内部收集经济新闻的更好方法吗? 我看过http://www.rseek.org/但找不到任何东西。 感谢您的帮助。
<form method="post" action="/calendar" id="aspnetForm">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['aspnetForm'];
if (!theForm) {
theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
请您参考如下方法:
如@hrbrmstr注意到您可以使用 RSelenium 和 Selenium 操作浏览器:
require(RSelenium)
RSelenium::startServer()
remDr <- remoteDriver()
remDr$open(); Sys.sleep(15);
remDr$navigate("http://www.tradingeconomics.com/calendar")
# get the DOM element for the custom date
webElem <- remDr$findElement("xpath", "//a[@data-target=\"#datesDiv\"]")
# send a click to the element using javascript
remDr$executeScript("arguments[0].click();", list(webElem))
startDate <- remDr$findElement("id", "startDate")
startDate$clearElement()
startDate$sendKeysToElement(list("2014-01-01"))
endDate <- remDr$findElement("id", "endDate")
endDate$clearElement()
endDate$sendKeysToElement(list("2014-01-31"))
okButton <- remDr$findElement("id", "ctl00_ContentPlaceHolder1_ctl02_Button2")
okButton$clickElement()
Sys.sleep(15)
wData <- remDr$getPageSource()[[1]]
require(XML)
tables <- readHTMLTable(wData)
n.rows <- unlist(lapply(tables, function(t) dim(t)[1]))
dfcal <- as.data.frame(tables$calendar)
上面的脚本打开网页。单击自定义日期。输入相关日期并单击确定按钮。 然后获取页面的 html 源代码。