0

从网站http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396我试图只提取文本数据,例如出生、死亡、生物、位置和由部分创建到不同的行/列。我希望能够有一个电子表格,我可以在其中输入 FindAGrave URL 并让它为我提取上述数据。我在这里读到Using =importXML in Google Docs,它可以通过描述来做到这一点。从那里我学会了省略 Xpath tbody。这成功地让我的导入工作,但没有使用描述。我确定使用描述是否会更有效。我只想了解其他人如何从表中导入数据。谢谢

这是我到目前为止得到的。这将提取出生信息并放入行中。一个问题是它在每个数据之间添加了一个额外的单元格。

=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//html/body/table/tr/td[3]/table/tr[4]/td[1]/table/tr/td/table/tr/td/table/tr[1]/td[2]")

结果

Dec. 2, 1882        Humphreys County        Tennessee, USA

更新:我想我在代码中做了一些处理。这就是我现在正在使用的。

=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//*[@class='gr'][1]//tr/td/table/tr/td/table/tr[1]/td[1]")
=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//*[@class='gr']//tr/td/table/tr/td/table/tr[1]/td[2]/text()[1]")
=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//*[@class='gr']//tr/td/table/tr/td/table/tr[1]/td[2]/text()[2]")
=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//*[@class='gr']//tr/td/table/tr/td/table/tr[1]/td[2]/text()[3]")
=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//*[@class='gr']//tr/td/table/tr/td/table/tr[1]/td[2]/text()[4]")

=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//*[@class='gr'][1]//tr/td/table/tr/td/table/tr[2]/td[1]")
=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//*[@class='gr']//tr/td/table/tr/td/table/tr[2]/td[2]/text()[1]")
=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//*[@class='gr']//tr/td/table/tr/td/table/tr[2]/td[2]/text()[2]")
=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//*[@class='gr']//tr/td/table/tr/td/table/tr[2]/td[2]/text()[3]")
=IMPORTXML("http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", "//*[@class='gr']//tr/td/table/tr/td/table/tr[2]/td[2]/text()[4]")

结果:

Birth: 
Nov. 8, 1948
Benton
Saline County
Arkansas, USA

Death: 
Jan. 6, 2006
Tulsa
Tulsa County
Oklahoma, USA

有没有办法在代码中拆分这些数据?

4

2 回答 2

2

下面的公式

=IMPORTXML(
"http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396",
"//html/body/table/tr/td[3]/table/tr[4]/td[1]/table/tr/td/table/tr/td/table/tr[position()<=2]/td/text()"
)

返回

Birth: 
Nov. 8, 1948
Benton
Saline County
Arkansas, USA
Death: 
Jan. 6, 2006
Tulsa
Tulsa County
Oklahoma, USA

一个更短的替代方案,

=IMPORTXML(
"http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GScid=97961&GRid=22682396", 
"//tr[4]/td[1]//tr[position()<=2]/td/text()"
)

返回相同的结果

于 2016-09-12T05:36:15.523 回答
0

您可以通过简化 xpaths 来获得多个字段 - 您还可以将多个字段添加到一个函数调用中,用 a 分隔 xpaths |

`=ARRAYFORMULA(TRIM(TRANSPOSE(IMPORTXML($A3,"//td[@align='left']/text()|//tr[6]/td/a|//tr[3]/td/text()[1]"))))`

在此处输入图像描述

使用的三个 xpath 是:

//td[@align='left']/text()

//tr[6]/td/a

//tr[3]/td/text()[1]

于 2016-09-12T06:48:30.353 回答