@jintaxi
Чуть-чуть програю для себя.

Как с помощью Selenium забрать только некоторые элементы из тега?

Есть некая страница, на которой есть некая таблица, в которой нужная мне информация представлена примерно следующим образом:
<tbody>
   <tr>
      <td>День</td>
      <td>Время</td>
      <td>Кабинет</td>
      <td>Преподаватель</td>
      <td>Дисциплина</td>
      <td>Вид</td>
      <td>Ссылка</td>
   </tr>
   <tr>
      <td>День</td>
      <td>Время</td>
      <td>Кабинет</td>
      <td>Преподаватель</td>
      <td>Дисциплина</td>
      <td>Вид</td>
      <td>Ссылка</td>
   </tr>

   . . .

</tbody>

Я с помощью Selenium (нужен исключительно он по ряду причин) хочу забрать из данной таблицы лишь некоторые элементы (например, время, преподаватель, дисциплина, ссылка) и класть потом все это в массив.
Т.Е. После того, как Selenium дойдет до этой таблицы с этим элементами, я получаю на выход примерно следующую картину:
array = [["Время", "Преподаватель", "Дисциплина", "Ссылка"],
         ["Время", "Преподаватель", "Дисциплина", "Ссылка"],
         . . .]

P.S. Мне нужен только маленький кусочек кода, поэтому, пожалуйста, не надо расписывать как открыть браузер, как дойти до нужного сайта и т. д. У меня есть путь до этой таблицы благодаря XPath. Мне нужен исключительно метод (или что-то подобное) для сохранения только части информации. Спасибо.
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Ну так просто указывайте правильный xpath:
import io
from lxml import etree
parser = etree.HTMLParser()

data = """<tbody>
   <tr>
      <td>День</td>
      <td>Время</td>
      <td>Кабинет</td>
      <td>Преподаватель</td>
      <td>Дисциплина</td>
      <td>Вид</td>
      <td>Ссылка</td>
   </tr>
   <tr>
      <td>День</td>
      <td>Время</td>
      <td>Кабинет</td>
      <td>Преподаватель</td>
      <td>Дисциплина</td>
      <td>Вид</td>
      <td>Ссылка</td>
   </tr>
</tbody>"""


root = etree.parse(io.StringIO(data), parser=parser)

[[x.xpath('.//td[2]')[0].text, x.xpath('.//td[4]')[0].text] for x in root.xpath('.//tr')]
# [['Время', 'Преподаватель'], ['Время', 'Преподаватель']]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы