Урок 13. Selenium работа с таблицами в Python
Таблицы на веб-страницах часто содержат структурированные данные, такие как списки товаров, рейтинги, расписания и многое другое.
Selenium позволяет легко получать данные из таблиц, используя локаторы CSS, XPath или тег table.
Импорт и подготовка
Начнем с импорта необходимых модулей и открытия страницы с таблицей.
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get("https://example.com/table") # URL страницы с таблицей
time.sleep(2) # Пауза для загрузки таблицы
Получение строк таблицы
Для начала находим саму таблицу и получаем все строки <tr>.
table = driver.find_element(By.TAG_NAME, "table") # Находим таблицу
rows = table.find_elements(By.TAG_NAME, "tr") # Получаем все строки
Извлечение данных из ячеек
Далее можно пройтись по каждой строке и получить текст из ячеек <td>:
for idx, row in enumerate(rows):
cells = row.find_elements(By.TAG_NAME, "td")
if cells: # Пропускаем заголовок
row_data = [cell.text for cell in cells]
print(f"Строка {idx}: {row_data}")
Сохранение данных в список
Собранные данные можно сохранить в список Python для дальнейшей обработки:
data = []
for row in rows:
cells = row.find_elements(By.TAG_NAME, "td")
if cells:
row_data = [cell.text for cell in cells]
data.append(row_data)
print("Всего строк:", len(data))
Допустим, есть таблица с колонками: Компания, Имя, Страна. Мы можем собрать все строки и сохранить их в список Python.
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.w3schools.com/html/html_tables.asp")
# Находим все строки таблицы (tr), кроме заголовка
rows = driver.find_elements(By.CSS_SELECTOR, "#customers tr")
data = []
for row in rows[1:]: # пропускаем заголовок
cells = row.find_elements(By.TAG_NAME, "td")
company = cells[0].text.strip()
contact = cells[1].text.strip()
country = cells[2].text.strip()
data.append([company, contact, country])
for item in data:
print(item)
driver.quit()
Дополнительные советы
- Для таблиц с динамической подгрузкой используйте
WebDriverWaitперед получением строк. - Если таблица имеет заголовки
<th>, их можно обработать отдельно для создания словаря. - Для больших таблиц полезно использовать пагинацию или прокрутку, чтобы получить все данные.
Использование Selenium для работы с таблицами позволяет автоматизировать сбор структурированных данных и ускоряет анализ информации с сайтов.
Больше уроков по парсингу на parsertools.ru/lessons.
