1

我使用下面的脚本尝试从 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),但我还需要让我知道数据在 pdf 文件中的确切style位置。我怎样才能提取样式信息呢?谢谢。divspan

4

1 回答 1

0

我会用一个简单的正则表达式来做到这一点:

sub('.*style="([0-9a-z;:]*)".*', '\\1', t)

wheret将相应的 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可以类似地解决,我只是没有处理它,因为我不确定例如lefttop是否是静态字符串。

于 2012-04-28T08:13:31.503 回答