【问题标题】:Web-scraping issue with rvest and selector gadgetrvest 和选择器小工具的网络抓取问题
【发布时间】:2019-10-11 14:27:58
【问题描述】:

我正在尝试从以下网站获取 MLB 草案数据:

https://www.baseballamerica.com/draft-history/mlb-draft-database/#/

问题是我似乎找不到正确的类来输入 rvest::html_nodes() 以隔离表。使用 Chrome 的“检查”工具,我尝试了每个看似可以识别表的类:


library(tidyverse)
library(rvest)

url <- "https://www.baseballamerica.com/draft-history/mlb-draft-database/#/"

url %>% 
  read_html() %>% 
  html_nodes("table-container")

我也尝试过“search-table draft-search-table”,但我一直得到相同的结果:“{xml_nodeset (0)}”。任何帮助将不胜感激!

【问题讨论】:

  • 该表格可能是在页面使用 javascript 加载后加载的。 rvest 只会看到“源”选项卡中的数据,它可能看不到“元素”选项卡将显示的所有内容。如果您需要在页面上运行 javascript,则必须使用 Rselenium 之类的包。

标签: r web-scraping tidyverse rvest


【解决方案1】:

内容是从返回 json 的 API 调用动态加载的。您可以使用 httr POST 请求 API 获取信息

library(httr)

headers = c('Content-Type'='application/json')
data='{"SigningBonusMin":"0","SigningBonusMax":"0","Year":"2019","Round":"1","TeamId":"0","FourYearSchoolType":"false","JuniorCollegeType":"false","HighSchoolType":"false","OtherSchoolType":"false","OverallNumber":"0","pageId":"1","paid":"false"}'
r <- content(httr::POST(url = 'https://www.baseballamerica.com/umbraco/api/draftdatabaseapi/advancedsearch', httr::add_headers(.headers=headers), body = data, encode = "json"))$Results
print(r)

【讨论】:

    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2020-01-27
    相关资源
    最近更新 更多