【问题标题】:<div> in HTML seems to be empty (web scraping in r with rvest)HTML 中的 <div> 似乎是空的(使用 rvest 在 r 中抓取网页)
【发布时间】:2022-01-28 01:49:03
【问题描述】:

我正在尝试使用 r 库 rvest 从博彩网站上抓取一些数据。
为了获取这些值,我需要单击表格中的一些超链接。
为此,我使用以下代码:

odds_link <- "https://www.oddsportal.com/soccer/germany/bundesliga/results/"
odds_page <- read_html(odds_link)
node_table <- html_node(xpath = '//*[@id="tournamentTable"]')

我使用了这个 xpath 并且 node_table 返回了这个

{xml_nodeset (1)}
[1] <div id="tournamentTable"></div>\n

返回的节点看起来是空的,因为 div 标签之间没有任何内容......它应该看起来像that
在这一点上,我很失落。我尝试了几件事,但都没有成功。

node_table %>% html_node("table")
node_table %>% html_table()
node_table %>% html_structure()

这个被退回了:

> node_table %>% html_node("table")
{xml_missing}
<NA>
> node_table %>% html_table()
Fehler in html_table.xml_node(.) : html_name(x) == "table" is not TRUE
> node_table %>% html_structure()
<div#tournamentTable>

非常感谢您对此的帮助! (下一步是访问表中的these 超链接。)
我什至无法访问超链接...

xpath_link = '//*[@id="tournamentTable"]/tbody/tr[4]/td[2]/a'
odds_page %>% html_node(xpath = xpath_link)
> odds_page %>% html_node(xpath = xpath_link)
{xml_missing}
<NA>

【问题讨论】:

  • 该表由 Javascript 呈现。您可能需要 RSelenium 来完成此任务。

标签: html r web-scraping rvest


【解决方案1】:

RSelenium 解决方案,

启动浏览器

library(RSelenium)
library(dplyr)
library(rvest)
driver = rsDriver(port = 4492L, browser = c("firefox"))
remDr <- driver[["client"]]
remDr$navigate(url)

获取表格

remDr$getPageSource()[[1]] %>% 
    read_html() %>% html_nodes(xpath = '//*[@id="tournamentTable"]') %>% 
    html_table()


# A tibble: 82 x 7
   `Soccer» Germany»Bundesliga` `Soccer» Germany»Bundesliga`  `Soccer» Germany»Bundesliga` `Soccer» Germany~ `Soccer» German~ `Soccer» German~ `Soccer» German~
   <chr>                        <chr>                         <chr>                                    <dbl> <chr>                       <dbl> <chr>           
 1 "19 Dec 2021"                "19 Dec 2021"                 "19 Dec 2021"                             1    "X"                          2    "B's"           
 2 ""                           ""                            ""                                       NA    ""                          NA    ""              
 3 "16:30"                      "FC Koln - Stuttgart"         "1:0"                                     1.97 "3.90"                       3.63 "15" 

获取链接

 remDr$getPageSource()[[1]] %>% 
  read_html() %>% 
  html_nodes('.table-participant') %>% html_nodes('a') %>% 
   html_attr('href')

 [1] "/soccer/germany/bundesliga/1-fc-koln-vfb-stuttgart-Y3cdUviO/"               "/soccer/germany/bundesliga/freiburg-bayer-leverkusen-rF4qXt75/"            
 [3] "/soccer/germany/bundesliga/hertha-berlin-dortmund-4UhhVKyI/"                "/soccer/germany/bundesliga/bochum-union-berlin-Cfd0Tb6U/"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 2021-12-12
    • 2018-03-20
    • 2015-09-06
    相关资源
    最近更新 更多