嗨,我无法使这个功能正常工作....
在网页上:
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是什么,它甚至没有提到它的帮助页面!
答案 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"