Возврат IMPORTXML # N / A на определенной странице веб-сайта NCBI - защита от соскабливания? - PullRequest
0 голосов
/ 03 апреля 2019

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

Для "Официального полного имени" (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 Ответ

1 голос
/ 03 апреля 2019

вы можете попробовать очистить исходный код напрямую:

=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

...