Just Fighting

[Python] 크롤링한 데이터 csv로 변환하기 본문

Python

[Python] 크롤링한 데이터 csv로 변환하기

yennle 2022. 3. 1. 18:18
728x90

 

2022.02.08 - [Web/백엔드] - 웹 크롤링하기 2 (Selenium)

위의 게시글에서 사용한 selenium을 사용한 크롤링을 통해 데이터를 수집할 수 있었다.

 

 

이번엔 csv파일로 변환하는 작업을 해보았다.

 

먼저 라이브러리부터 import해준다.

그리고 크롬드라이브의 위치를 지정해준다.

from selenium import webdriver
from selenium.webdriver.common.by import By
import pandas as pd

browser = webdriver.Chrome('c:/chromedriver/chromedriver.exe')  # chromedriver 다운받고, 다운 받은 경로 써주어야함

 

그리고 컬럼별로 list를 만들어준 뒤,

크롤링을 통해 가져온 데이터를 리스트에 하나씩 집어 넣을 것이다.

datelist = []
titlelist = []
stagelist = []
team1list = []
team2list = []
winlist = []

 

나는 여러 페이지의 데이터가 필요했기 때문에 url에 pg변수를 이용하였다.

여러 페이지를 들어가본뒤 바뀌는 부분을 찾고, 그부분을 직접 바꿔주는 과정을 거쳤다.

아래 사진에서 날짜와 타이틀, 게임정보, 팀명 2개, 승패정보를 가져오려고 한다.

# 크롤링
for page in range(1,3):
    search_url = "https://lol.inven.co.kr/dataninfo/match/teamList.php?pg=" + str(page) + "&iskin=lol&category=LCK2021"
    browser.get(search_url)

    browser.implicitly_wait(2)

    game = browser.find_elements(By.CLASS_NAME, "listFrame")

    for i in range(20):
        date = game[i].find_element(By.CLASS_NAME, "date").text
        title = game[i].find_element(By.CLASS_NAME, "title").text
        stage = game[i].find_element(By.CLASS_NAME, "stage").text
        teamname = game[i].find_elements(By.CLASS_NAME, "teamname")
        team1 = teamname[0].text
        team2 = teamname[1].text
        win = game[i].find_element(By.CLASS_NAME, "color1.tx5").text

        #print(date, title, stage, team1, team2, win)
        datelist.append(date)
        titlelist.append(title)
        stagelist.append(stage)
        team1list.append(team1)
        team2list.append(team2)
        winlist.append(win)

browser.close()

 

 

크롤링한 데이터를 dataframe으로 변환해준다.

컬럼과 리스트를 이용해 딕셔너리 변수를 만들고, dataframe으로 바꿔준다.

바꾸면 아래와 같이 결과가 출력된다.

# dataframe으로 변환
data = {"date" : datelist,"title":titlelist, "stage":stagelist, "team1":team1list, "team2":team2list, win:winlist}
df = pd.DataFrame(data)
print(df.head(5))

 

 

이제 dataframe을 csv파일로 내보내는 방법이다.

encoding방식을 그냥 utf-8로 하면 한글이 깨진다.

따라서 utf-8-sig로 내보내면 성공적으로 csv파일이 만들어진다.

# dataframe을 csv파일로 내보내기
df.to_csv("test.csv", encoding = "utf-8-sig")

 

 

 

728x90
Comments