Функция IMPORTXML в Google Sheets - PullRequest
       100

Функция IMPORTXML в Google Sheets

1 голос
/ 31 октября 2019

Используя функцию IMPORTXML, возможно ли построить запрос XPATH, который извлекает значение Industry для данной страницы Википедии?

Например, значение, которое я хочу получить с этой страницы - https://en.wikipedia.org/wiki/Target_Corporation - это «Розница», тогда как на этой странице - https://en.wikipedia.org/wiki/Boohoo.com - это будет «Мода».

Ответы [ 2 ]

2 голосов
/ 31 октября 2019
  • Вы хотите создать xpath для извлечения отраслевого значения для данной страницы Википедии.

Если мое понимание верно, как и другой шаблон, как насчет формулы с этим xpath? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Пример формулы:

=IMPORTXML(A1,"//th[text()='Industry']/following-sibling::td")

Результат:

enter image description here

Справка:

Добавлено:

Из вашего ответа я знал, что вы хотите добавить еще 2 URL,Таким образом, все URL следующие:

Проблема и обходное решение:

Для приведенных выше URL-адресов при использовании формулы =IMPORTXML(A1,"//th[text()='Industry']/following-sibling::td") возвращаются Retail, Fashion, Retail и Travel, services.

Когда xpath изменен на //th[text()='Industry']/following-sibling::td/a, Retail, #N/A, #N/A и Travel возвращаются.

Причина этого заключается в следующем разнице

<tr>
  <th scope="row">Industry</th>
  <td class="category"><a href="/wiki/Travel" title="Travel">Travel</a> services</td>
</tr>

и

<tr>
  <th scope="row" style="padding-right:0.5em;">Industry</th>
  <td class="category" style="line-height:1.35em;"><a href="/wiki/Retail" title="Retail">Retail</a></td>
</tr>

и

<tr>
  <th scope="row" style="padding-right:0.5em;">Industry</th>
  <td class="category" style="line-height:1.35em;">Fashion</td>
</tr>

Этим, я думаю, что, к сожалению, для получения Travel, Retail иFashion сверху, их нельзя получить напрямую только с одним xpath. Поэтому я использовал встроенную функцию для этой ситуации.

Обходной путь:

В этом обходном пути я использовал INDEX. Пожалуйста, подумайте об этом как об одном из нескольких ответов.

=INDEX(IMPORTXML(A1,"//th[text()='Industry']/following-sibling::td"),1,1)
  • xpath - //th[text()='Industry']/following-sibling::td. Это не изменяется.
  • В этом случае URL-адрес помещается в ячейку «A1».
  • Когда получено 2 значения, получено 1-е. При этом я использовал INDEX.
Результат:

enter image description here

0 голосов
/ 31 октября 2019

попробовать:

=INDEX(IMPORTXML("https://en.wikipedia.org/wiki/Boohoo.com", 
 "//td[@class='category']"), 2, 1)

=INDEX(IMPORTXML("https://en.wikipedia.org/wiki/Target_Corporation", 
 "//td[@class='category']"),2,1)

0

...