Обработка html таблиц с Python и Selenium

Обработка html таблиц с Python и Selenium

Обработка html таблиц с Python и Selenium

Здравствуйте! В сегодняшней статье мы рассмотрим как распарсить HTML таблицу при помощи Python и Selenium webdriver. И прежде всего создадим html файл с примером таблицы.



<!DOCTYPE html>

<html>

<style>

table, th, td {

  border:1px solid black;

}

</style>

<body>



<h2>A basic HTML table</h2>



<table style="width:100%">

  <tr>

    <td>Язык</td>

    <td>Рейтинг</td>

  </tr>

  <tr>

    <td>Python</td>

    <td>10</td>

  </tr>

  <tr>

    <td>JavaScript</td>

    <td>6</td>

  </tr>

</table>







</body>

</html>









Если все сделано правильно, то в браузере должна появиться таблица.

Далее скачиваем selenium web driver для Firefox. По адресу https://github.com/mozilla/geckodriver/releases/. Называется он geckodriver. Необходимо скачать архив и распаковать его.



# Импортируем  модули драйвера

import sys

from selenium import webdriver

from selenium.webdriver.common.by import By

import time



# В экземпляре класса передаем путь к exe файлу  вебдрайвера 



driver = webdriver.Firefox(executable_path=r'путь_к_драйверу/geckodriver.exe')





# ссылка на html таблицу,

# впереди обязательно прописываем file:///

link2 = "file:///C:/Users/УЗИ/Desktop/Таблица.html"



print(link2)



try:

  # открываем ссылку в браузере

  driver.get(link2)



  # находим количество строк в таблице

  rows = len(driver.find_elements(by=By.XPATH, value = '/html/body/table/tbody/tr'))

  # подсчет количества столбцов 

  cols = len(driver.find_elements(by=By.XPATH, value = '/html/body/table/tbody/tr[1]/td'))





  print(rows)

  print(cols)



  # итерация по строкам и столбцам таблицы

  for r in range(2, rows+1):

    for c in range(1, cols+1):

        value = driver.find_element(by=By.XPATH, value = '/html/body/table/tbody/tr['+str(r)+']/td['+str(c)+']').text

        print(value, end = '           n')

finally:  

  time.sleep(30)

  # обязательно  прописываем выход из вебдрайвера

  driver.quit()



# вывод



/*

Python

10

JavaScript

6

*/



В нашем примере используются локаторы типа /html/body/table/tbody/tr. Для его получения, необходимо сперва зайти в инструменты разработчика, выбрать элемент из ячейки таблицы и правой кнопкой мыши скопировать XPATH.

По ним вебдрайвер находит искомые элементы.
Метод find_elements находит все элементы с данным локатором и возвращает список. Далее при помощи метода len вычисляется длина списка.

Для парсинга таблицы, вычисленные значения , передаются в цикл for, где они подставляются в локатор следующим образом tr['+str(r)+']/td['+str(c)+']. Методом text получаем текст содержащийся по данной ячейке таблицы.

Таким образом, последовательно, можно пройтись по достаточно крупной таблице с какого-либо сайта.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий