代码之家  ›  专栏  ›  技术社区  ›  Mona Jalal

没有适用于“NULL”类对象的“xpathApply”方法

  •  5
  • Mona Jalal  · 技术社区  · 11 年前

    我有以下代码,我不知道为什么会收到此错误:

    rm(list=ls())
    require("XML")
    # <a href="/music/The+Beatles/Sgt.+Pepper%27s+Lonely+Hearts+Club+Band" 
    beatles = "http://www.last.fm/music/The+Beatles/"
    
    beatles.albums.page = paste(sep="", beatles, "+albums")
    lines = readLines(beatles.albums.page)
    album.lines = grep(pattern="href.*link-reference", lines, value=TRUE)
    album.names = sub(pattern=".*<h3>(.*)</h3>.*", replacement="\\1", x=album.lines)
    album.names = gsub(pattern=" ", replacement="+", x=album.names)
    album.names = gsub(pattern="'", replacement="%27", x=album.names)
    
    for (album in album.names[1]) {
      print(album)
      album.link = paste(sep="", beatles, album)
      print(album.link)
      tables = readHTMLTable(album.link)
    
    }
    

    知道吗?

    1 回复  |  直到 11 年前
        1
  •  4
  •   Fernando    11 年前

    线路

    readHTMLTable(album.link)
    

    正在导致错误。尝试将其更改为

    tables = readHTMLTable(album.link, header = FALSE)
    

    但它仍然给你警告:

    Warning message:
    In readLines(beatles.albums.page) :
      incomplete final line found on 'http://www.last.fm/music/The+Beatles/+albums'
    

    你可以摆脱它

    readLines(beatles.albums.page, warn = FALSE) 
    

    还要注意,您不是在“保存”表,它在每个循环中都会发生变化,但这可能就是您想要的。