IMPORTXML在NCBI网站的特定页面上返回#N / A-刮刮保护吗?

时间:2019-04-03 08:34:50

标签: google-sheets google-sheets-formula google-sheets-importxml

我正在尝试抓取此页面https://www.ncbi.nlm.nih.gov/gene/2597,以使用IMPORTXML将“正式全名”,“也称为”和其他一些信息发送到Google表格。

对于“正式全名”(e.g. glyceraldehyde-3-phosphate dehydrogenase),我尝试这样做:

=IMPORTXML("https://www.ncbi.nlm.nih.gov/gene/55054", "//*[@id="summaryDl"]/dd[2]/text()")

给我#N / A

因此,我尝试将""更改为'',以使用放置URL和查询的单元格,以所有可能的方式更改查询:D。

我注意到我可以使用IMPORTHTML(并在页面中包含有关表的一些信息)或IMPORTRSS,但无法获取所需的信息。因此,我认为该网站不会阻止抓取。

我认为这是一个JS或XML问题,但事实并非如此(我认为...也许我错过了一些东西)。我什至尝试使用某人代码中的IMPORTJSON,但什么也收不到(老实说,可能太复杂了,无法使用。)

我真的在这里被封锁,所以如果有人可以帮助...?

1 个答案:

答案 0 :(得分:1)

您可以尝试直接抓取源代码:

=ARRAY_CONSTRAIN(IMPORTDATA("https://www.ncbi.nlm.nih.gov/gene/55054"), 10000, 1)

然后执行类似的操作以获取“也称为”值:

=REGEXREPLACE(QUERY(
 {{""; ARRAY_CONSTRAIN(IMPORTDATA("https://www.ncbi.nlm.nih.gov/gene/55054"), 500, 1)},
      {ARRAY_CONSTRAIN(IMPORTDATA("https://www.ncbi.nlm.nih.gov/gene/55054"), 500, 1); ""}},
 "select Col2 where Col1 contains'Also known as'"), "<dd>|</dd>", "")

0