xpathSApply()返回line(),h3lp请

时间:2013-05-27 23:47:23

标签: r

嗨,我无法使这个功能正常工作....

在网页上:

http://www.meetup.com/stats-prog-dc/members/?sort=chapter_member.atime&desc=1&offset=3

有memName类的链接,例如:

<a href="http://www.meetup.com/stats-prog-dc/members/94995702/" class="memName">Asuri</a>

在R中,我输入以下命令:

>web <- getURL("http://www.meetup.com/stats-prog-dc/members/?sort=chapter_member.atime&desc=1&offset=3", ssl.verifypeer = FALSE)
>webhtml <- htmlTreeParse(web,error=function( ...){},useInternalNodes=TRUE,encoding="UTF-8",trim=TRUE)
>vNames <- xpathSApply(webhtml,'//*[@class="memName "]', xmlValue)
>vNames

问题是vNames返回“list()”而不是包含“Asuri”和所有其他名称的列表。请问为什么它不起作用这就是杀了我,R中的帮助是如此不清楚。

如果我不在htmlTreeParse(web)中放置参数,为什么xpathSApply会返回错误? xpathSApply中的参数xmlValue是什么,它甚至没有提到它的帮助页面!

1 个答案:

答案 0 :(得分:2)

您已为属性名称添加了空格。使用

xpathSApply(webhtml,'//*[@class="memName"]', xmlValue)

 [1] "James Conkling"     "Mary Clare Peate"   "Mike Hodel"        
 [4] "Harlan Harris"      "kenny"              "Alex McKenzie"     
 [7] "KJ"                 "shaema talib"       "Brian Sacash"      
[10] "fbohorqu"           "Peter"              "Steve Swartz"      
[13] "Russell"            "J. Kader Hyer"      "T Woo"             
[16] "Rajavel Sethupathi" "Clarence Dillon"    "Patrick Wheatley"  
[19] "Anna Shaver"        "anupam"     

代替。

xmlValue为您提供特定节点的值。 ?xmlValue会为您提供帮助页面。 xpathSApply有一个参数fun,用于将函数应用于每个节点。 如果需要特定节点的属性,可以使用例如xmlAttrs

> xpathSApply(webhtml,'//*[@class="memName"]',xmlAttrs)
      [,1]                                                   
href  "http://www.meetup.com/stats-prog-dc/members/37625662/"
class "memName"                                              
      [,2]                                                   
href  "http://www.meetup.com/stats-prog-dc/members/94691152/"
class "memName"                                              
      [,3]                                                   
href  "http://www.meetup.com/stats-prog-dc/members/91583452/"
class "memName"