Just Fighting
[Python] 크롤링한 데이터 csv로 변환하기 본문
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
'Python' 카테고리의 다른 글
결측값 처리하기 2 (평균, 중앙값) (0) | 2022.03.23 |
---|---|
[Python] Counter() 이용해 카운트 하기 (0) | 2022.03.17 |
결측값 처리하기 (0) | 2022.02.13 |
웹 크롤링하기 2 (Selenium) (0) | 2022.02.08 |
데이터 합치기 (concat, merge, join) (0) | 2022.02.07 |
Comments