R 从Yahoo Finance中刮取HTML表

R 从Yahoo Finance中刮取HTML表,r,web-scraping,rvest,R,Web Scraping,Rvest,我想从Yahoo Finance抓取一张表,并将其作为数据帧下载。 不幸的是,我真的不知道如何使用rvest-包来实现它 以下是第一种方法: library(tidyverse) library(rvest) url<-"https://finance.yahoo.com/calendar/ipo?from=2021-02-21&to=2021-02-27&day=2021-02-23" url %>% html() %>% ht

我想从Yahoo Finance抓取一张表,并将其作为数据帧下载。 不幸的是,我真的不知道如何使用
rvest
-包来实现它

以下是第一种方法:

library(tidyverse)
library(rvest)

url<-"https://finance.yahoo.com/calendar/ipo?from=2021-02-21&to=2021-02-27&day=2021-02-23"

url %>%
  html() %>%
  html_nodes(xpath="table") %>%
  html_table()
库(tidyverse)
图书馆(rvest)
url%
html()%>%
html_节点(xpath=“table”)%>%
html_表()
正如预期的那样,代码不起作用。 有人能帮我吗

我希望将带边框的表作为数据框:


非常感谢

不幸的是,使用
html\u table
无法轻松提取该表。下面是一种从表中提取单个值并进行一些后处理以获取数据帧中的数据的方法

library(rvest)

url<-"https://finance.yahoo.com/calendar/ipo?from=2021-02-21&to=2021-02-27&day=2021-02-23"

url %>%
  read_html() %>%
  html_nodes('table') %>%
  .[[1]] -> tab1
header <- tab1 %>% html_nodes('th') %>% html_text()

result <- tab1%>%
  html_nodes('tr.simpTblRow td') %>%
  html_text() %>%
  matrix(ncol = 9, byrow = TRUE) %>%
  as.data.frame()
names(result) <- header

result

#    Symbol                                     Company Exchange
#1    VELOU            Velocity Acquisition Corp. Units   Nasdaq
#2    FTAAU          FTAC Athena Acquisition Corp. Unit   Nasdaq
#3    CMIIU               CM Life Sciences II Inc. Unit   Nasdaq
#4                                       Metropress Ltd      LSE
#5 CTWO.P.V                        County Capital 2 Ltd     TSXV
#6    GSEVU              Gores Holdings VII, Inc. Units   Nasdaq
#7     NVOS Novo Integrated Sciences, Inc. Common Stock   Nasdaq
#8    SLAMU                             Slam Corp. Unit   Nasdaq

#          Date   Price Range Price Currency   Shares  Actions
#1 Feb 23, 2021 10.00 - 10.00     -      USD        - Expected
#2 Feb 23, 2021             -     -      USD        - Expected
#3 Feb 23, 2021 10.00 - 10.00     -      USD        - Expected
#4 Feb 01, 2021             -     6      GBP 45452752   Priced
#5 Nov 19, 2020   0.08 - 0.08   0.1      CAD  6000000   Priced
#6 Feb 23, 2021             -     -      USD        - Expected
#7 Feb 23, 2021             -     -      USD        - Expected
#8 Feb 23, 2021 10.00 - 10.00     -      USD        - Expected
库(rvest)
url%
读取html()%>%
html_节点('表')%>%
[1]]->tab1
标题%html\u节点('th')%%>%html\u文本()
结果%
html_节点('tr.simpTblRow td')%>%
html_text()%>%
矩阵(ncol=9,byrow=TRUE)%>%
as.data.frame()

名称(结果)不幸的是,使用
html\u table
无法轻松提取该表。下面是一种从表中提取单个值并进行一些后处理以获取数据帧中的数据的方法

library(rvest)

url<-"https://finance.yahoo.com/calendar/ipo?from=2021-02-21&to=2021-02-27&day=2021-02-23"

url %>%
  read_html() %>%
  html_nodes('table') %>%
  .[[1]] -> tab1
header <- tab1 %>% html_nodes('th') %>% html_text()

result <- tab1%>%
  html_nodes('tr.simpTblRow td') %>%
  html_text() %>%
  matrix(ncol = 9, byrow = TRUE) %>%
  as.data.frame()
names(result) <- header

result

#    Symbol                                     Company Exchange
#1    VELOU            Velocity Acquisition Corp. Units   Nasdaq
#2    FTAAU          FTAC Athena Acquisition Corp. Unit   Nasdaq
#3    CMIIU               CM Life Sciences II Inc. Unit   Nasdaq
#4                                       Metropress Ltd      LSE
#5 CTWO.P.V                        County Capital 2 Ltd     TSXV
#6    GSEVU              Gores Holdings VII, Inc. Units   Nasdaq
#7     NVOS Novo Integrated Sciences, Inc. Common Stock   Nasdaq
#8    SLAMU                             Slam Corp. Unit   Nasdaq

#          Date   Price Range Price Currency   Shares  Actions
#1 Feb 23, 2021 10.00 - 10.00     -      USD        - Expected
#2 Feb 23, 2021             -     -      USD        - Expected
#3 Feb 23, 2021 10.00 - 10.00     -      USD        - Expected
#4 Feb 01, 2021             -     6      GBP 45452752   Priced
#5 Nov 19, 2020   0.08 - 0.08   0.1      CAD  6000000   Priced
#6 Feb 23, 2021             -     -      USD        - Expected
#7 Feb 23, 2021             -     -      USD        - Expected
#8 Feb 23, 2021 10.00 - 10.00     -      USD        - Expected
库(rvest)
url%
读取html()%>%
html_节点('表')%>%
[1]]->tab1
标题%html\u节点('th')%%>%html\u文本()
结果%
html_节点('tr.simpTblRow td')%>%
html_text()%>%
矩阵(ncol=9,byrow=TRUE)%>%
as.data.frame()

名称(结果)这是解决问题的最简单方法,它还保留了标题:)

库(tidyverse)
图书馆(rvest)
url%
html_节点(xpath='/*[@id=“cal res table”]')%>%
as.character()%>%
XML::readHTMLTable()
#df是一个由两个表组成的列表(从网站上可以看到)-只选择第一个列表项
tbl NULL..符号。空。公司空。交换
#>1 VELOU Velocity收购公司纳斯达克分公司
#>2 FTAAU FTAC雅典娜收购公司纳斯达克分公司
#>3 CMIIU CM生命科学II有限公司纳斯达克分公司
#>4 Metropress有限公司伦敦证券交易所
#>5 CTWO.P.V县资本2有限公司TSXV
#>6 GSEVU Gores Holdings VII,Inc.在纳斯达克的子公司
#>7 NVOS Novo Integrated Sciences,Inc.普通股纳斯达克
#>8 SLAMU Slam Corp.在纳斯达克的子公司
#>NULL.Date NULL.Price.Range NULL.Price NULL.Currency NULL.Shares
#>2021年2月23日10.00-10.00-美元-
#>2021年2月23日——美元-
#>2021年2月23日10.00-10.00-美元-
#>2021年2月1日4日-6英镑452752
#>2020年11月19日0.08-0.08 0.1加元6000000
#>2021年2月23日6日——美元-
#>2021年2月23日7日——美元-
#>2021年2月23日10.00-10.00-美元-
#>空。操作
#>1预期
#>2预期
#>3预期
#>4定价
#>5定价
#>6预期
#>7预期
#>8预期

不过,您可能需要清理这些列名。:)

这是解决问题的最简单方法,它还保留了标题:)

库(tidyverse)
图书馆(rvest)
url%
html_节点(xpath='/*[@id=“cal res table”]')%>%
as.character()%>%
XML::readHTMLTable()
#df是一个由两个表组成的列表(从网站上可以看到)-只选择第一个列表项
tbl NULL..符号。空。公司空。交换
#>1 VELOU Velocity收购公司纳斯达克分公司
#>2 FTAAU FTAC雅典娜收购公司纳斯达克分公司
#>3 CMIIU CM生命科学II有限公司纳斯达克分公司
#>4 Metropress有限公司伦敦证券交易所
#>5 CTWO.P.V县资本2有限公司TSXV
#>6 GSEVU Gores Holdings VII,Inc.在纳斯达克的子公司
#>7 NVOS Novo Integrated Sciences,Inc.普通股纳斯达克
#>8 SLAMU Slam Corp.在纳斯达克的子公司
#>NULL.Date NULL.Price.Range NULL.Price NULL.Currency NULL.Shares
#>2021年2月23日10.00-10.00-美元-
#>2021年2月23日——美元-
#>2021年2月23日10.00-10.00-美元-
#>2021年2月1日4日-6英镑452752
#>2020年11月19日0.08-0.08 0.1加元6000000
#>2021年2月23日6日——美元-
#>2021年2月23日7日——美元-
#>2021年2月23日10.00-10.00-美元-
#>空。操作
#>1预期
#>2预期
#>3预期
#>4定价
#>5定价
#>6预期
#>7预期
#>8预期

不过,您可能需要清理这些列名。:)

这看起来很好!是否还有一种方法可以保留表格的标题?它需要单独提取。查看更新的答案。这看起来非常好!是否还有一种方法可以保留表格的标题?它需要单独提取。请参阅更新的答案。谢谢。这个解决方案非常有效!很高兴听到@Tobkel谢谢。这个解决方案非常有效!很高兴听到@TobKel