我正在尝试自动化抓取Investing.com Economic Calendar等网页表格的过程 如果我们只对默认选项卡感兴趣,那么这对R来说相当简单,默认选项卡显示今天的日历。这是R代码:
library(rvest)
library(dplyr)
Econ_webpage <- read_html("https://www.investing.com/economic-calendar/")
Indicators <- Econ_webpage %>% html_nodes("#economicCalendarData") %>%
html_table(fill = TRUE) %>% .[[1]] %>% .[-(1:3),- c(match("Imp.",colnames(.)),ncol(.))]
产生下面显示的所需结果。
> head(Indicators)
Time Cur. Event Actual Forecast Previous
4 19:50 JPY BoJ Summary of Opinions
5 19:50 JPY Exports (YoY) (Feb) 1.9% 12.3%
6 19:50 JPY Imports (YoY) (Feb) 17.1% 7.9%
7 19:50 JPY Trade Balance (Feb) -100B -944B
8 20:01 GBP Rightmove House Price Index (MoM) 0.8%
9 21:30 CNY House Prices (YoY) (Feb) 5.0%
但是,如果我想在选项卡中刮掉表明天我需要使用Selenium驱动程序。我已经尝试过RSelenium,但无法让它在我的机器上工作,所以我在Python中尝试过Selenium。我在Python中使用以下代码:
import selenium
from selenium import webdriver
driver.Chrome(executable_path=PATH_TO_CHROMEDRIVER)
driver.get("https://www.investing.com/economic-calendar/")
driver.find_element_by_id("timeFrame_tomorrow").click()
html = driver.page_source
现在我在字符串中包含了所需的表数据的html,我根本不知道如何有效地进行分析以生成R代码的结果。我可以以某种方式调用rpy2包,它允许在Python中使用R代码或其他人知道以上述相同的形式提取表的更简单方法吗?我该如何解析这个html字符串?
答案 0 :(得分:1)
RSelenium
R
我们可以尝试
library(RSelenium)
library(XML)
rD <- rsDriver()
remDr <- rD[["client"]]
remDr$navigate("https://www.investing.com/economic-calendar/")
option <- remDr$findElement("id", "timeFrame_tomorrow")
option$clickElement()
res <- readHTMLTable((remDr$getPageSource()[[1]]))$economicCalendarData
res <- res[-1,]
head(res)
# Time Cur. Imp. Event Actual Forecast Previous
#2 02:30 GBP Investing.com GBP/USD Index 46.5%
#3 02:30 USD Investing.com Gold Index 65.6%
#4 02:30 USD Investing.com S&P 500 Index 70.7%
#5 02:30 CAD Investing.com USD/CAD Index 41.8%
#6 02:30 CHF Investing.com USD/CHF Index 53.8%
#7 02:30 AUD Investing.com AUD/USD Index 47.9%
remDr$close()
rD[["server"]]$stop()