IMPORTXML возвращает # N / A на определенной странице веб-сайта NCBI — защищен от очистки?

#google-sheets #google-sheets-formula #google-sheets-importxml

#google-sheets #google-sheets-формула

Вопрос:

Я пытаюсь очистить эту страницуhttps://www.ncbi.nlm.nih.gov/gene/2597 чтобы получить «официальное полное имя», «также известное как» и некоторые другие сведения в Google Sheet с помощью IMPORTXML .

Для «Официального полного имени» ( e.g. glyceraldehyde-3-phosphate dehydrogenase ) я пытаюсь это:

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

дает мне # N / A

Поэтому я пытаюсь изменить "" by '' , чтобы использовать ячейки, в которые я помещаю URL и запрос, измените запрос всеми возможными способами: D.

Я замечаю, что могу использовать IMPORTHTML (и иметь некоторую информацию о таблицах внутри страницы) или IMPORTRSS , но не могу получить нужную информацию. Поэтому я думаю, что веб-сайт не блокирует очистку.

Я думал, что это проблема JS или XML, но, похоже, это не так (на мой взгляд … может быть, я что-то пропустил). Я даже пытаюсь использовать IMPORTJSON чей-то код, но ничего не могу получить (честно говоря, вероятно, слишком сложный для использования).

Я действительно заблокирован здесь, поэтому, если кто-нибудь может помочь …?

Ответ №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

Комментарии:

1. отлично! извините, что спрашиваю об этом, но …. Я не понимаю! как это работает? Я пытаюсь изменить, чтобы получить официальное полное имя, но не могу найти решение, лол… какова цель ARRAY_CONSTRAIN и REGEXPLACE ?

2. REGEXREPLACE — это как замена, чтобы избавиться от этих HTML-тегов. ARRAY_CONSTRAIN является ограничителем, потому что весь исходный код слишком велик для импорта, поэтому мы просто импортируем первые 500 строк кода (потому что есть то, что нам нужно) и 1 столбец. да, официальное полное имя не может быть удалено, потому что в исходном коде его нет — вероятно, оно введено через JS, поэтому его там нет, но rest можно получить

3. «Официальное полное имя» не может быть удалено