网页抓取 Returns xml_nodeset R 中的 0
Webscraping Returns xml_nodeset 0 in R
我正在尝试抓取该网站。 https://web.tmxmoney.com/earnings.php?qm_symbol=DOL 特别是屏幕底部的 table。
我已经尝试了无数 CSS 和 XPath,但仍然得到 {xml_nodeset(0)}。我正在寻找一个直观的答案而不仅仅是代码。
以下是我的一些尝试。
library(httr)
library(rvest)
library(dplyr)
tbl = read_html('https://web.tmxmoney.com/earnings.php?qm_symbol=DOL')%>%
html_nodes("table").[2]%>%html_table(fill = T)#no luck
tbl = read_html('https://web.tmxmoney.com/earnings.php?qm_symbol=DOL')%>%
html_nodes(xpath = '//*[@id="DataTables_Table_0"]')%>%html_table(fill = T)#node set(0)
我尝试了无数其他方法,使用选择器小工具并检查了源代码。
我没有检查完整的服务条款,所以请注意,抓取可能不合法。
以下应该可以解决问题:
library(rvest)
library(data.table)
library(httr)
library(XML)
library(RSelenium)
mybrowser <- rsDriver(browser = 'firefox')
link <- "https://web.tmxmoney.com/earnings.php?qm_symbol=DOL"
mybrowser$client$navigate(link)
mybrowser$client$findElement(using = 'css selector', "#DataTables_Table_0")$getElementText()
html.table <- mybrowser$client$findElement(using = 'css selector', "#DataTables_Table_0")
webElem5txt <- html.table$getElementAttribute("outerHTML")[[1]]
df.table <- read_html(webElem5txt) %>% html_table() %>% data.frame(.)
mybrowser$server$stop()
# Excerpt of the data:
> df.table
Var.1 Quarter.End X..EPS.Actual X..EPS.Estimate X..Estimates X..Surprise X..Surprise.1 Date
1 NA 2019-07-31 (Q2 2020) 0.45 0.47 3 -0.02 -4.26% 2019-09-12
2 NA 2019-04-30 (Q1 2020) 0.33 0.33 4 0.00 0.00% 2019-06-13
3 NA 2019-01-31 (Q4 2019) 0.54 0.55 4 -0.01 -1.82% 2019-03-28
4 NA 2018-10-31 (Q3 2019) 0.41 0.42 3 -0.01 -2.38% 2018-12-06
5 NA 2018-07-31 (Q2 2019) 0.43 0.44 3 -0.01 -2.27% 2018-09-13
6 NA 2018-04-30 (Q1 2019) 0.31 0.31 3 0.00 0.00% 2018-06-07
7 NA 2018-01-31 (Q4 2018) 0.48 0.47 4 0.01 2.13% 2018-03-29
我正在尝试抓取该网站。 https://web.tmxmoney.com/earnings.php?qm_symbol=DOL 特别是屏幕底部的 table。 我已经尝试了无数 CSS 和 XPath,但仍然得到 {xml_nodeset(0)}。我正在寻找一个直观的答案而不仅仅是代码。
以下是我的一些尝试。
library(httr)
library(rvest)
library(dplyr)
tbl = read_html('https://web.tmxmoney.com/earnings.php?qm_symbol=DOL')%>%
html_nodes("table").[2]%>%html_table(fill = T)#no luck
tbl = read_html('https://web.tmxmoney.com/earnings.php?qm_symbol=DOL')%>%
html_nodes(xpath = '//*[@id="DataTables_Table_0"]')%>%html_table(fill = T)#node set(0)
我尝试了无数其他方法,使用选择器小工具并检查了源代码。
我没有检查完整的服务条款,所以请注意,抓取可能不合法。 以下应该可以解决问题:
library(rvest)
library(data.table)
library(httr)
library(XML)
library(RSelenium)
mybrowser <- rsDriver(browser = 'firefox')
link <- "https://web.tmxmoney.com/earnings.php?qm_symbol=DOL"
mybrowser$client$navigate(link)
mybrowser$client$findElement(using = 'css selector', "#DataTables_Table_0")$getElementText()
html.table <- mybrowser$client$findElement(using = 'css selector', "#DataTables_Table_0")
webElem5txt <- html.table$getElementAttribute("outerHTML")[[1]]
df.table <- read_html(webElem5txt) %>% html_table() %>% data.frame(.)
mybrowser$server$stop()
# Excerpt of the data:
> df.table
Var.1 Quarter.End X..EPS.Actual X..EPS.Estimate X..Estimates X..Surprise X..Surprise.1 Date
1 NA 2019-07-31 (Q2 2020) 0.45 0.47 3 -0.02 -4.26% 2019-09-12
2 NA 2019-04-30 (Q1 2020) 0.33 0.33 4 0.00 0.00% 2019-06-13
3 NA 2019-01-31 (Q4 2019) 0.54 0.55 4 -0.01 -1.82% 2019-03-28
4 NA 2018-10-31 (Q3 2019) 0.41 0.42 3 -0.01 -2.38% 2018-12-06
5 NA 2018-07-31 (Q2 2019) 0.43 0.44 3 -0.01 -2.27% 2018-09-13
6 NA 2018-04-30 (Q1 2019) 0.31 0.31 3 0.00 0.00% 2018-06-07
7 NA 2018-01-31 (Q4 2018) 0.48 0.47 4 0.01 2.13% 2018-03-29