Запрос Xpath, делающий определенный запрос более общим - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь извлечь информацию из таблиц Википедии.

Более конкретно, я пытаюсь составить список всех команд и всех игроков в высшей лиге.

До сих пор Я могу пройтись по всем командам в таблице команд Премьер-лиги на 2019-2020 годы, для каждой команды, которую я там попадаю, я попадаю на страницу Википедии и просматриваю, как ее игрок получает информацию.

Я думал, что есть фиксированный шаблон, в котором все команды высшей лиги в Википедии располагают свои таблицы игроков на позиции 3, но после обхода 6 команд они столкнулись с командой, которая находится на втором месте.

Поэтому я использовал следующий запрос XPath для вики-страница каждой команды

"//table[3]/tbody//tr[position() > 1]//td[4]//span/a/@href"

но, например, следующая таблица игроков команды находится на позиции 2, как я могу сделать этот запрос более обобщенным c и не зафиксировать его на определенной позиции? Я заметил, что перед всеми моими соответствующими таблицами есть элемент с текстом «Отряд первой команды»

Таблица HTML слишком длинная, поэтому я публикую здесь ссылку на вики определенного команда

https://en.wikipedia.org/wiki/Crystal_Palace_F.C.

Надеемся на помощь! спасибо.

1 Ответ

0 голосов
/ 27 апреля 2020

Вы должны использовать другой «якорь», который работает для каждой страницы. Таблица, в которой вы нуждаетесь, всегда является первой после элемента промежутка «Игроки».

Итак, с этим:

//span[@id='Players']/following::table[1]//span[@class="fn"]//text()

Вы получите имена всех игроков текущей команды отряда.

С этим:

//span[@id='Players']/following::table[1]//span[@class="fn"]//@href

Вы получите соответствующие URL. /! \ Некоторые игроки не имеют веб-страницы википедии. Таким образом, вы можете иметь 26 имен игроков, но 25 URL. Как здесь:

https://en.wikipedia.org/wiki/Chelsea_F.C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...