Привет, У меня есть html-страница, которую я хочу запросить/"очистить" с помощью YQL. Я хочу получить только текст из четырех столбцов из тега таблицы на этой странице html, и я не знаю, как представить это с помощью XPath.
Я нашел одну из ячеек, щелкнув правой кнопкой мыши по ячейке в Chrome, проверил элемент и скопировал xpath, и это результат, который я получил только для этой ячейки.
//*[@id="partsTable"]/tbody/tr[1]/td[8]/text()
Таким образом, это выражение для 1-й строки и 8-го столбца. На самом деле, я хочу получить все строки для содержимого в столбцах 5,6,8,9. Я не знаю, можно ли легко написать это в XPath.
Большое спасибо за помощь. (Я абсолютно не знаком с XPath, поэтому объяснение будет оценено)
Вы можете запрашивать определенные позиции с синтаксисом, подобным SQL IN
:
[position() = (5, 6, 8, 9)]
Таким образом, ваше полное выражение:
//*[@id="partsTable"]/tbody/tr[1]/td[position() = (5, 6, 8, 9)]/text()
Используйте position()
для запроса индекса элемента.
//*[@id="partsTable"]/tbody/tr/td[5 <= position() and position() <= 9]/text()
Наблюдайте за тем, как извлекать выражение XPath с помощью инструментов разработчика в браузерах, посмотрите на " Почему мой запрос XPath (соскабливание таблиц HTML) работает только в Firebug, но не в приложении, которое я разрабатываю? ".