Wczytanie HTML do dataframe Pandas

Można wczytać dane z pliku HTML za pomocą funkcji pandas.read_html. Funkcja ta szuka w dokumencie HTML tabel i zwraca ich zawartość jako listę obiektów DataFrame. Przykład:

import pandas as pd

# Wczytaj wszystkie tabele z pliku HTML
df_list = pd.read_html('plik.html')

# Wczytaj tylko pierwszą tabelę
df = df_list[0]

# Wczytaj wszystkie tabele z URL-a
df_list = pd.read_html('http://mojastrona.pl/dane.html')

# Wczytaj tabele z dokumentu HTML zapisanego w zmiennej
zawartosc = '<table><tr><th>Kolumna1</th><th>Kolumna2</th></tr><tr><td>Wiersz1Kolumna1</td><td>Wiersz1Kolumna2</td></tr></table>'
df = pd.read_html(zawartosc)[0]
  • io – ciąg znaków lub obiekt typu file-like, zawierający dokument HTML. Może to być plik lokalny, URL lub zawartość dokumentu HTML przechowywana w zmiennej.
  • match – ciąg znaków, wyrażenie regularne lub krotka ciągów znaków. Służy do filtrowania tabel, które mają zostać wczytane.
  • header – określa, który wiersz ma zostać użyty jako nagłówki kolumn. Może być liczbą całkowitą (np. header=0) lub listą liczb całkowitych (np. header=[0, 1]).
  • index_col – indeks kolumny lub lista indeksów kolumn, które mają zostać użyte jako indeks DataFrame. Może to być liczba całkowita (np. index_col=0) lub lista liczb całkowitych (np. index_col=[0, 1]).
  • skiprows – lista wierszy, które mają zostać pominięte podczas wczytywania danych. Może to być lista liczb całkowitych (np. skiprows=[0, 2]) lub lista list liczb całkowitych (np. skiprows=[[0, 2], [5, 7]]).
  • attrs – słownik atrybutów, które mają zostać użyte podczas szukania tabel w dokumencie HTML.

Przykłady użycia tych parametrów:

import pandas as pd

# Wczytaj tabele z pliku HTML, których atrybut "class" ma wartość "data"
df_list = pd.read_html('plik.html', attrs={'class': 'data'})

# Wczytaj tabele z URL-a, których atrybut "id" zaczyna się od "tab-"
df_list = pd.read_html('http://mojastrona.pl/dane.html', attrs={'id': 'tab-.*'})


# Wczytaj tabele z dokumentu HTML, które zawierają wiersz z nagłówkami o treści "Kolumna1" i "Kolumna2"
df_list = pd.read_html('plik.html', match='.*Kolumna1.*Kolumna2.*')

# Wczytaj tabele z pliku HTML, używając pierwszego wiersza jako nagłówków kolumn
df_list = pd.read_html('plik.html', header=0)

# Wczytaj tabele z pliku HTML, używając pierwszego i drugiego wiersza jako nagłówków kolumn
df_list = pd.read_html('plik.html', header=[0, 1])

# Wczytaj tabele z pliku HTML, używając trzeciej kolumny jako indeksu
df_list = pd.read_html('plik.html', index_col=2)

# Wczytaj tabele z pliku HTML, pomijając pierwszy wiersz
df_list = pd.read_html('plik.html', skiprows=0)

# Wczytaj tabele z pliku HTML, pomijając pierwszy i trzeci wiersz
df_list = pd.read_html('plik.html', skiprows=[0, 2])