【问题标题】:html_attr "href" returns NA in rvesthtml_attr "href" 在 rvest 中返回 NA
【发布时间】:2017-07-06 15:04:39
【问题描述】:

我的目标是使用 rvest 提取与网站中特定 css 元素关联的 url。在查看了其他几个类似的问题之后,我想我需要将 html_attr 函数与 'href' 参数一起使用。使用我目前的脚本,这仅返回 NA 值,尽管我希望它返回 url。

构建变量的输入

library(rvest)

my_url <- "http://www.sherdog.com/events/UFC-Fight-Night-111-Holm-vs-Correia-58241"

my_read_url <- read_html(my_url)

my_nodes <- html_nodes(my_read_url, ".fighter_result_data a span , .right_side a span , .left_side a span")

输入以查看my_nodes是否来自运动员的姓名。

html_text(my_nodes)

显示 my_nodes 的输出正在选择我想要的 css 元素。

[1] "Holly Holm"          "Bethe Correia"       "Marcin Tybura"      
 [4] "Andrei Arlovski"     "Colby Covington"     "Dong Hyun Kim"      
 [7] "Rafael dos Anjos"    "Tarec Saffiedine"    "Jon Tuck"           
[10] "Takanori Gomi"       "Walt Harris"         "Cyril Asker"        
[13] "Alex Caceres"        "Rolando Dy"          "Yuta Sasaki"        
[16] "Justin Scoggins"     "Jingliang Li"        "Frank Camacho"      
[19] "Russell Doane"       "Kwan Ho Kwak"        "Naoki Inoue"        
[22] "Carls John de Tomas" "Lucie Pudilova"      "Ji Yeon Kim"  

输入以尝试获取每个运动员独特页面的网址。

html_attr(my_nodes, "href")

输出显示我的尝试仅返回NA 值列表

[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

谁能帮我实际获取网址而不是这些 NA 值?谢谢!

【问题讨论】:

    标签: html css r web-scraping rvest


    【解决方案1】:

    您选择的是span 元素,而不是html_nodes 命令中的a 元素。 span 元素没有 href= 属性,只有 a 元素有。而是使用

    my_nodes <- html_nodes(my_read_url, ".fighter_result_data a, .right_side a, .left_side a")
    html_text(my_nodes)
    html_attr(my_nodes, "href")
    

    【讨论】:

    • 这可以到达那里的 99%。 html_text(my_nodes) 现在在索引 1 和 3 处有奇怪之处。无论如何,要创建一个带有 css 元素的 my_nodes 变量,它会生成我感兴趣的特定运动员列表,没有奇怪的索引,以及正确的网址?谢谢!
    • 谢谢,这有助于让我摆脱困境!我试图在一开始就使用“a”,例如“.a name”,但由于某种原因这不起作用。把'a'放在最后是有效的!
    【解决方案2】:

    类似于@MrFlick 的回答,链接在&lt;a&gt; 中,您必须访问它。

    my_url %>%
      read_html() %>%
      html_nodes('.fighter_result_data') %>% html_nodes('a') %>% 
      html_attr('href')
    [1] "/fighter/Marcin-Tybura-86928"        "/fighter/Andrei-Arlovski-270"   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多