(1) gsubfn
Предполагается, что s
является входной строкой (она может содержать символы новой строки), которая соответствует <
, за которой следует все, что не является /
, >
или пробелом, и извлекает ее в теги. Функция table
табулирует вхождения:
library(gsubfn)
tags <- strapply(tolower(s), "\\<([^/> ]+)", c, simplify = unlist)
table(tags)
Например,
s <- "<html>
<body>
<h1>hello</h1>
</body>
</html>"
tags <- strapply(tolower(s), "\\<([^/> ]+)", c, simplify = unlist)
table(tags)
дает это:
tags
body h1 html
1 1 1
Если ваш файл очень большой, тогда версия для разработки gsubfn имеет быструю версию под названием strapplyc
.
(2) XML
Приведенный выше подход может быть сбит с толку, если в кавычках и в других случаях есть символы <
и >
. В любом случае, в вашем входе не может быть таких случаев, но на случай, если у второго подхода не возникнет такой проблемы:
library(XML)
doc <- htmlTreeParse(tolower(s), asText = TRUE, useInternalNodes = TRUE)
tags <- xpathSApply(doc, "//*", xmlName)
table(tags)