【问题标题】:Web scraping fund data from Yahoo finance using rvest使用 rvest 从雅虎财经网络抓取基金数据
【发布时间】:2018-02-08 00:29:48
【问题描述】:

我正在尝试从雅虎财经网页中抓取 3 项给定共同基金或 ETF 代码的项目:基金名称、费用比率和净资产。我是网络抓取的新手,不熟悉 CSS 和 XML,并且阅读了有关 rvest 和 SelectorGadget 工具的信息。好消息是我几乎可以刮掉基金名称。

在本例中,我使用了代码“FNDB”。信息在这两个页面中的任何一个上 - 我会同时显示一个比另一个更容易使用的情况,但我的代码使用第一个:

Summary page
Profile page

这是提取标题的代码和结果:

library(rvest)
url <- "https://finance.yahoo.com/quote/FNDB?p=FNDB"
#Reading the HTML code from the website
webpage <- read_html(url)
code <- "title"
result <- html_nodes(webpage,code)
result

{xml_nodeset (1)}
[1] FNDB : Schwab Fundamental U.S. Broad M - Yahoo Finance 摘要\n

这并不完全是我想要的,因为结果包含的信息比我想要的要多,但我可以使用它。在这里的帮助将不胜感激,但我主要是在寻找有关提取净资产和费用比率信息的代码的指导。如果没有这一点,我会很感激有人指出我可以在哪里学习如何找出代码。使用 SelectorGadget 返回“未找到有效路径”。谢谢。

【问题讨论】:

  • 不知道 r 是如何工作的,所以也不知道 rvest。但是您必须将此作为选择器传递给 net_assets 的“[data-test=NET_ASSETS-value] span”和费用比率的“[data-test=EXPENSE_RATIO-value] span”

标签: r web-scraping rvest


【解决方案1】:

你可以得到整张桌子,考虑一下

result <- html_nodes(webpage, "#quote-summary")
result <- html_nodes(result, "table") %>% html_table()

【讨论】:

    【解决方案2】:

    我也很难弄清楚 rvest 和 SelectorGadget。更聪明的人可以使用 CSS 选择器,但我必须使用 XPATH 选择器。这里有一些功能可以完成您的任务。请记住,这些输出是字符,需要转换为数字。

    library(rvest)
    
    get_url <- function(sym) {
      out <- paste0("https://finance.yahoo.com/quote/", sym, "/profile?p=", sym)
    }
    
    get_name <- function(sym) {
      url <- get_url(sym)
      name <- read_html(url) %>%
        html_nodes(xpath = 
          '//*[contains(concat( " ", @class, " " ), concat( " ", "Mend(40px)", " " ))]') %>%
        html_text()
      return(name)
    }
    
    get_ratio <- function(sym) {
      url <- get_url(sym)
      out <- read_html(url) %>%
        html_nodes(xpath = 
          '//*[contains(concat( " ", @class, " " ), concat( " ", "Ta(e)", " " ))]') %>%
        html_text()
      return(out[4])
    }
    
    get_assets <- function(sym) {
      url <- get_url(sym)
      out <- read_html(url) %>%
        html_nodes(xpath = 
          '//*[contains(concat( " ", @class, " " ), concat( " ", "Fl(end)", " " ))]') %>%
        html_text()
      return(out[6])
    }
    

    【讨论】:

    • Brian 的帖子很有帮助。如果我想找到其他元素,是否有资源建议找出分配给 xpath 参数的文本?
    猜你喜欢
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    相关资源
    最近更新 更多