在R

时间:2015-10-07 19:47:17

标签: xml r xml-parsing whitespace space

library(httr)
library(RCurl)
library(XML)
raw <- GET("http://hse.ru/org/persons",
           query = list(udept = "135083"))
raw_text <- content(raw, "text", encoding = "UTF-8")
parsed <- htmlParse(raw_text)
interests <- xpathSApply(parsed, 
                        '/html/body/div/div/div/div[2]/div/div/div/div/div/div/div/div', 
                         xmlValue)
interests[31:32]
[1] "прикладная эконометрикаЭмпирический анализ рынков(…)"
[2] "современная теория правасоциология права" 

对于那些不熟悉俄语的人。最后两行很难解释为:

interests[31:32]
[1] "applied econometricsEmpirical analysis of markets"
[2] "modern legal theorysociology of law"

我正在应用xmlValue的对象具有这种结构(已翻译):

[[1]]
<div class="with-indent small">
  <a class="tag" href="/org/persons/?intst=62024792">applied econometrics</a>
  <a class="tag" href="/org/persons/?intst=62247389">empirical analysis of markets</a>
  (...)
</div> 

[[2]]
<div class="with-indent small">
  <a class="tag" href="/org/persons/?intst=132077027">modern legal theory</a>
  (...)
  <a class="tag" href="/org/persons/?intst=52953762">sociology of law</a>
</div> 

我想知道如何在值之间添加空格(或"; ")作为分隔符并获取以下内容:

 interests[31:32]
 [1] "applied econometrics Empirical analysis of markets"
 [2] "modern legal theory sociology of law"

我尝试将xmlValuepastexpathSApply(parsed, 'pattern', paste(xmlValue, " ")))一起使用并收到错误。

1 个答案:

答案 0 :(得分:1)

如果我理解正确(不能阅读俄语),您可以使用getChildrenStrings

sapply(parsed['/html/body/div/div/div/div[2]/div/div/div/div/div/div/div/div', fun = getChildrenStrings], paste, collapse = ";")
# ...
# [30] "экономика образования;мониторинг образования;качество образования;оплата труда;06.71.45 Экономика образования"                                                                                                                                                                    
# [31] "прикладная эконометрика;Эмпирический анализ рынков;Количественные маркетинговые исследования;прикладная статистика;06.00.00 Экономика. Экономические науки"                                                                                                                    
# [32] "современная теория права;чистое учение о праве;проблемы суверенитета;социология права" 
# ...