我正在尝试解析一些用R编写的不幸的html,但遇到了一些障碍。
表结构是这样的,我需要在单独字段中的2个字符串仅由标签分隔。
<td align="left"valign="top"><font face="Arial" size="2">Frederick Henry Bay, Australia<br>Ansett ANA
我需要将位置和运算符分开,但似乎无法找到一种方法,而不会变得很笨拙。我认为首先必须有一种正确解析HTML的方法。
到目前为止,我一直在解析如下
# Read and parse HTML file
html.raw = htmlTreeParse(url,useInternal = TRUE)
# Extract HTML.
html.parse = unlist(xpathApply(html.raw, '//td', xmlValue))
但这会丢弃br标签,并迫使我使用str_split来根据
“?<= [a-z] | \))(?== [A-Z]”
但这是不可靠的。有任何想法吗?
最佳答案
这个怎么样
test<-'<html><td align="left"valign="top"><font face="Arial" size="2">Frederick Henry Bay, Australia<br>Ansett ANA</td><td align="left"valign="top"><font face="Arial" size="2">Liverpool, England<br>Queen BRB</td></html>'
library(XML)
html.raw = htmlTreeParse(test,useInternal = TRUE)
xpathApply(html.raw, '//td', function(x)
xpathSApply(x,".//text()", xmlValue)
)
哪个返回
[[1]]
[1] "Frederick Henry Bay, Australia" "Ansett ANA"
[[2]]
[1] "Liverpool, England" "Queen BRB"
请注意,每个td都变成列表中的一个元素,并且列表由长度为2的向量组成。
关于xml - 在R中的<td>元素内解析<br>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29280246/