我使用下面的脚本尝试从PDF转换的HTML文件中提取数据。
temp.html <- scan(file=filename,what="character")
pagetree <- htmlTreeParse(temp.html, error=function(...){}, useInternalNodes = TRUE)
tx.raw <- getNodeSet(pagetree,"//div")
tx.raw
创建一个列表,其中一个显示如下:
tx[[170]]
[[170]]
<div style="position:absolute;top:985;left:748">
<nobr>
<span class="ft03">
971.72
</span>
</nobr>
</div>
我需要的信息在span
内(即971.72
),但我还需要style
中的div
告诉我这些数据的确切位置span
位于pdf文件中。我怎样才能提取样式信息呢?感谢。
答案 0 :(得分:0)
我会用简单的正则表达式:
来做到这一点sub('.*style="([0-9a-z;:]*)".*', '\\1', t)
t
将相应的HTML部分保存为文本。
基于演示HTML部分的冗长示例:
## loading your demo HTML part to one line
t <- paste(readLines(textConnection('<div style="position:absolute;top:985;left:748">
<nobr>
<span class="ft03">
971.72
</span>
</nobr>
</div>')), collapse = '')
## let us extract some parts!
library(XML)
t.html <- htmlTreeParse(t, useInternalNodes = TRUE)
t.val <- xpathApply(t.html, '//div', xmlValue)
t.val <- gsub('\\s', '', t.val)
t.style <- sub('.*style="([0-9a-z;:]*)".*', '\\1', t)
根据您之前解析HTML的方式,当然可以消除上述大部分内容。
<强>结果:强>
> t.val
[1] "971.72"
> t.style
[1] "position:absolute;top:985;left:748"
提取top
和left
可以类似地解决,我只是不处理它,因为我不确定是否例如left
和top
是静态字符串。