Если вы видите xpath, который вы используете, и HTML-код для той же страницы, что вы дали, первая строка (tr) таблицы имеет заголовок таблицы (th), а со второй строки и далее мы имеем данные таблицы (тд), но не тд. По этой причине вы получаете текст для первого индекса и получаете исключение NoSuchElementException от второго индекса. Вы можете изменить свой xpath таким образом, чтобы он обрабатывал, где всегда находится заголовок таблицы и где есть данные таблицы. Это поможет вам получить данные.
Этот xpath (// [@ id = "mw-content-text"] / div / table [1] / tbody / tr) дает 55 соответствующих элементов. Если вы примените // [@ id = "mw-content-text"] / div / table [1] / tbody / tr [1], он будет соответствовать первому элементу, и у этого элемента будет 'th'. т.е. (// [@ id = "mw-content-text"] / div / table [1] / tbody / tr [1] / th [1]) будет работать. Но для 2-го индекса (// [@ id = "mw-content-text"] / div / table [1] / tbody / tr [2]) у нас есть td вместо th. Есть проблема.
Вы можете изменить свой xptah на основе приведенного выше объяснения (я проверил HTML на то же самое и заметил, что некоторые имеют th, а некоторые с td. В этих случаях выборка данных всех элементов с одинаковым xpath невозможна вообще. Единственно возможный способ - написать xpath по отдельности или разделить все th и td и запустить цикл с условием if).