Pandas DataFrame에서 HTML 테이블 읽기

Fariba Laiq 2023년10월10일
  1. read_html() 메서드를 사용하여 Pandas DataFrame에서 HTML 테이블 읽기
  2. read_html() 메서드를 사용하여 URL에서 HTML 테이블 읽기
  3. read_html() 메서드를 사용하여 문자열에서 HTML 테이블 읽기
  4. read_html() 메서드를 사용하여 파일에서 HTML 테이블 읽기
Pandas DataFrame에서 HTML 테이블 읽기

이 튜토리얼은 URL, 문자열 또는 파일에서 HTML 테이블을 읽고 Python에서 Pandas 데이터 프레임으로 변환하는 방법을 보여줍니다. read_html()은 Pandas 데이터 프레임에서 HTML 테이블을 스크랩하는 데 사용되는 Pandas 라이브러리의 빠르고 편리한 방법입니다.

read_html() 메서드를 사용하여 Pandas DataFrame에서 HTML 테이블 읽기

read_html() 메서드는 웹 사이트의 URL, HTML 문자열 또는 HTML 텍스트 파일을 인수로 사용합니다. 웹 사이트, 문자열 또는 파일에 여러 테이블이 포함될 수 있기 때문에 모든 테이블을 스크랩하고 데이터 프레임 목록 형식으로 반환합니다.

테이블이 없으면 코드는 ValueError: No tables found를 제공합니다.

Python에 lxml 설치

lxml은 HTML 및 XML 데이터를 데이터 스크래핑, 처리 및 처리하는 데 사용되는 Python의 라이브러리입니다. read_html() 메서드를 사용하기 전에 다음 명령을 사용하여 lxml을 설치하고 Jupyter Notebook을 사용하는 경우 커널을 다시 시작해야 합니다.

#Python 3.x
pip install lxml

read_html() 메서드를 사용하여 URL에서 HTML 테이블 읽기

웹 사이트의 URL을 read_html() 메서드의 인수로 전달하여 모든 테이블을 읽고 Pandas 데이터 프레임에 저장합니다. 데이터 프레임과 함께 len() 메서드를 사용하여 반환된 테이블 수를 계산할 수 있습니다.

여기서 우리는 두 개의 테이블 목록을 얻습니다. 첫 번째 테이블에 액세스하려면 목록의 인덱스 0을 통해 액세스합니다.

예제 코드:

# Python 3.x
import pandas as pd

tables = pd.read_html("https://www.w3schools.com/html/html_tables.asp")
print("No of tables returned:", len(tables))
display(tables[0])

출력:

URL에서 Pandas 읽기 HTML - 출력

read_html() 메서드를 사용하여 문자열에서 HTML 테이블 읽기

다음 코드에는 table 변수에 저장된 문자열 형식의 HTML 테이블이 있습니다. 테이블을 Pandas 데이터 프레임으로 변환하기 위해 read_html() 메서드를 호출하고 HTML 문자열을 인수로 전달합니다.

HTML 문자열에는 테이블이 하나만 있으므로 데이터 프레임 목록의 길이는 1입니다. 인덱스를 사용하여 테이블에 액세스하여 테이블을 표시합니다.

예제 코드:

# Python 3.x
import pandas as pd

table = """<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Department</th>
            <th>Marks</th>
            <th>Age</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Robert</td>
            <td>CS</td>
            <td>60</td>
            <td>20</td>
        </tr>
        <tr>
            <td>Sam</td>
            <td>SE</td>
            <td>81</td>
            <td>21</td>
        </tr>
        <tr>
            <td>Alia</td>
            <td>SE</td>
            <td>79</td>
            <td>20</td>
        </tr>
    </tbody>
</table>"""
df_table = pd.read_html(table)
display(df_table[0])

출력:

Pandas Read HTML From String - 출력

read_html() 메서드를 사용하여 파일에서 HTML 테이블 읽기

파일 처리를 통해 Pandas 데이터 프레임의 텍스트 파일에 저장된 HTML 테이블을 읽습니다. 먼저 테이블이 포함된 텍스트 파일을 현재 디렉터리에 넣습니다.

또는 Jupyter 노트북을 사용하는 경우 홈 디렉터리에 텍스트 파일을 업로드해야 합니다. 그런 다음 open()을 통해 텍스트 파일을 읽고 파일을 읽을 것이기 때문에 파일 이름r을 모드로 전달합니다.

read() 메서드를 통해 Pandas 데이터 프레임에서 파일 내용을 추출합니다.

예제 코드:

# Python 3.x
import pandas as pd

table_path = "table.txt"
with open(table_path, "r") as f:
    df_table = pd.read_html(f.read())
display(df_table[0])

출력:

Pandas 파일에서 HTML 읽기 - 출력

작가: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

관련 문장 - Pandas DataFrame