Skip to main content
 首页 » 编程设计

R 网络抓取 : interrogating for date

2025年01月19日110zdz8207

我能够从包含新闻的网页中抓取表格

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 源代码。