Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中使用XML在html中提取数据时提取“样式”信息_Xml_R_Web Scraping - Fatal编程技术网

在R中使用XML在html中提取数据时提取“样式”信息

在R中使用XML在html中提取数据时提取“样式”信息,xml,r,web-scraping,Xml,R,Web Scraping,我使用下面的脚本尝试从PDF转换的HTML文件中提取数据 temp.html <- scan(file=filename,what="character") pagetree <- htmlTreeParse(temp.html, error=function(...){}, useInternalNodes = TRUE) tx.raw <- getNodeSet(pagetree,"//div") 我需要的信息在span即971.72中,但我还需要在div中设置样式,以便

我使用下面的脚本尝试从PDF转换的HTML文件中提取数据

temp.html <- scan(file=filename,what="character")
pagetree <- htmlTreeParse(temp.html, error=function(...){}, useInternalNodes = TRUE)
tx.raw <- getNodeSet(pagetree,"//div")

我需要的信息在span即971.72中,但我还需要在div中设置样式,以便让我知道span中的数据在pdf文件中的确切位置。如何也提取样式信息?谢谢。

我会用一个简单的regexp:

其中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)
提取top和left可以类似地处理,我只是没有处理它,因为我不确定left和top是否是静态字符串

sub('.*style="([0-9a-z;:]*)".*', '\\1', t)
## 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)
> t.val
[1] "971.72"
> t.style
[1] "position:absolute;top:985;left:748"