З веб-сайту https://www.google.co.uk/finance?cid=704531 Я намагаюся імпортувати поля "Діапазон" і "52 тиждень" та інші групи цієї групи посередині. Я подивився на XPath і дуже збентежений ним.
У комірці А1 я https://www.google.co.uk/finance?cid=704531
.
У комірці В1 я
=importxml(A1,//*[@id="market-data-div"]/div[2]/div[1]/table[1]/tbody/tr[4]/td[1])
Але результат - помилка.
Який правильний вираз XPath для цієї структури HTML?
Відповіді:
4 для відповіді № 1Дом та <tbody/>
Здається, ви створили цей вираз XPath в Firebug або подібних інструментах для розробників. Хоча HTML не вимагає <tbody/>
теги, які робить DOM; і ці інструменти для розробників працюють над DOM і таким чином загортають рядки таблиці в такий елемент. Ви можете легко побачити різницю, переглядаючи джерело сторінки (отримано користувачем wget
або інші інструменти, якщо це необхідно) та структуру, представлену Firebug.
Просто опустіть /tbody
крок осі у вашому вираженні:
//*[@id="market-data-div"]/div[2]/div[1]/table[1]/tr[4]/td[1]
У будь-якому випадку, я б швидше йшов на отримання комірок за описом, який трохи слабкіший щодо змін у формулюванні, але набагато більш надійний до змін у структурі:
//*[@id="market-data-div"]//tr[td = "Vol / Avg."]/td[2]
Цитуючи вираз
Друга проблема полягає в тому, що ви повинні цитувати вираз XPath у подвійних лапках, тому, наприклад, використовуйте:
=importxml(A1,"//*[@id="market-data-div"]//tr[td = "Vol / Avg."]/td[2]")