Xml 解析<;br>;在a<;td>;R元素
我试图解析一些用R编写的非常不幸的html,但我遇到了一些障碍 表结构是这样的,我需要在单独字段中的两个字符串仅由一个Xml 解析<;br>;在a<;td>;R元素,xml,r,xpath,Xml,R,Xpath,我试图解析一些用R编写的非常不幸的html,但我遇到了一些障碍 表结构是这样的,我需要在单独字段中的两个字符串仅由一个标记分隔 <td align="left"valign="top"><font face="Arial" size="2">Frederick Henry Bay, Australia<br>Ansett ANA 但是这会删除br标记,并强制我使用str_split根据 “?您可以使用getChildrenStrings函数: ap
标记分隔
<td align="left"valign="top"><font face="Arial" size="2">Frederick Henry Bay, Australia<br>Ansett ANA
但是这会删除br标记,并强制我使用str_split根据“?您可以使用
getChildrenStrings
函数:
appHtml <- '<td align="left"valign="top"><font face="Arial" size="2">Frederick Henry Bay, Australia<br>Ansett ANA'
library(XML)
doc <- htmlParse(appHtml)
res <- doc["//td/font", fun = getChildrenStrings]
> res[[1]]
text br text
"Frederick Henry Bay, Australia" "" "Ansett ANA"
> lapply(res, function(x) x[names(x) == "text"])
[[1]]
text text
"Frederick Henry Bay, Australia" "Ansett ANA"
appHtml您可以使用getChildrenStrings
函数:
appHtml <- '<td align="left"valign="top"><font face="Arial" size="2">Frederick Henry Bay, Australia<br>Ansett ANA'
library(XML)
doc <- htmlParse(appHtml)
res <- doc["//td/font", fun = getChildrenStrings]
> res[[1]]
text br text
"Frederick Henry Bay, Australia" "" "Ansett ANA"
> lapply(res, function(x) x[names(x) == "text"])
[[1]]
text text
"Frederick Henry Bay, Australia" "Ansett ANA"
appHtml这个怎么样
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)
)
请注意,每个td都被转换为列表中的一个元素,并且列表由两个向量组成。这如何
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)
)
请注意,每个td都被转换为列表中的一个元素,列表由两个长度向量组成。您可以在
matrix(
xpathSApply(doc, '//td//text()', xmlValue),
ncol = 2, byrow = T)
# [,1] [,2]
# [1,] "Frederick Henry Bay, Australia" "Ansett ANA"
你可以试着在你的血管里做点什么
matrix(
xpathSApply(doc, '//td//text()', xmlValue),
ncol = 2, byrow = T)
# [,1] [,2]
# [1,] "Frederick Henry Bay, Australia" "Ansett ANA"
我想是这样的!我刚刚运行了一个快速测试,它似乎返回了我想要的结果。我有点不好意思承认我在这个问题上浪费了多少时间。可以将最后一条语句写成:xpathApply(html.raw,//td',xpathSApply,.//text(),xmlValue)
我想可以了!我刚刚运行了一个快速测试,这似乎正好返回了我想要的结果。我有点不好意思承认我在这个问题上浪费了多少时间。可以将最后一条语句写成:xpathApply(html.raw,//td',xpathSApply,“.//text()”,xmlValue)
谢谢!这也很有效。非常感谢谢谢!这也很有效。非常感谢