[파이썬] requests-html 스크레이핑한 데이터의 데이터베이스 저장

웹 스크레이핑은 많은 데이터를 수집하고 분석하기 위해 매우 중요한 도구입니다. requests-html은 파이썬에서 웹 페이지를 스크레이핑하기위한 강력한 라이브러리입니다. 이번 블로그 포스트에서는 requests-html을 사용하여 스크래핑한 데이터를 데이터베이스에 저장하는 방법을 알아보겠습니다.

데이터베이스 설정

먼저, 데이터베이스에 접속하고 데이터를 저장하기 위해 필요한 테이블을 생성해야합니다. 여기서는 SQLite 데이터베이스를 사용할 것이므로 sqlite3 모듈을 사용하여 데이터베이스에 접속하는 예제를 살펴보겠습니다.

import sqlite3

# 데이터베이스에 접속
conn = sqlite3.connect('data.db')

# 커서 생성
cursor = conn.cursor()

# 테이블 생성
cursor.execute('''
    CREATE TABLE IF NOT EXISTS scraped_data (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        title TEXT,
        description TEXT,
        url TEXT
    )
''')

# 변경사항 저장
conn.commit()

# 연결 닫기
conn.close()

위 예제에서는 data.db라는 이름으로 SQLite 데이터베이스에 접속하고, scraped_data라는 테이블을 생성합니다. 이 테이블은 id, title, description, url 필드를 가지고 있습니다.

데이터 스크레이핑

이제 requests-html을 사용하여 데이터를 스크레이핑하고 데이터베이스에 저장하는 예제를 살펴보겠습니다.

from requests_html import HTMLSession
import sqlite3

# 데이터베이스에 접속
conn = sqlite3.connect('data.db')
cursor = conn.cursor()

# requests-html 세션 생성
session = HTMLSession()

# 웹 페이지 요청 및 데이터 스크레이핑
response = session.get('http://example.com')
titles = response.html.find('.title')
descriptions = response.html.find('.description')
urls = response.html.find('.url')

# 스크레이핑한 데이터를 데이터베이스에 저장
for i in range(len(titles)):
    title = titles[i].text
    description = descriptions[i].text
    url = urls[i].text
    
    # SQL 쿼리 실행
    cursor.execute('INSERT INTO scraped_data (title, description, url) VALUES (?, ?, ?)', (title, description, url))

# 변경사항 저장 및 연결 닫기
conn.commit()
conn.close()

위 예제에서는 HTMLSession을 사용하여 웹 페이지에 대한 세션을 생성하고, 해당 페이지에서 .title, .description, .url 클래스를 가진 요소들을 스크레이핑합니다. 그리고 스크레이핑한 각 데이터를 데이터베이스에 저장하는데, 이를 위해 SQL 쿼리를 실행하여 데이터를 삽입합니다.

결론

이번 블로그 포스트에서는 requests-html을 사용하여 데이터를 스크레이핑하고, SQLite 데이터베이스에 저장하는 방법을 알아보았습니다. 데이터베이스는 스크레이핑한 데이터를 유지하고 분석하기 위한 좋은 방법입니다. 다음 번에 스크레이핑 작업을 수행할 때는 이 방법을 활용해보세요.

잠시 후에 더 많은 블로그 포스트를 준비할 것입니다. 감사합니다!