KartTrack-lap / Kartrider-game-analysis

유저가 선호하는 트랙을 만들기 위해서는 어떤 특성을 고려해야할까요? 카트타고 출근팀의 Kartrider-game-anlysis는 신규 트랙 디자인을 고민하는 카트라이더 트랙 디자이너를 위해 유저가 선호하는 트랙의 특징을 분석하는 프로젝트입니다.
5 stars 0 forks source link

[외부데이터 활용] - 크롤링 #4

Open hyeming-king opened 1 year ago

hyeming-king commented 1 year ago

필요한 자료 수집

트랙 메타 데이터

유저 반응 텍스트 데이터

goodkse7 commented 1 year ago

2022.10.13의 성과

트랙 메타 데이터 크롤링

1. 진행한 것

TMI 트랙 메타 데이터

소스를 읽어 BeatuifulSoup를 이용해 파싱

html = driver.page_source # 브라우저가 가지고 있는 정보를 가져옴 soup = BeautifulSoup(html, "html.parser") track_list = soup.select("table.UQjgK8i0._f0b7325cc9e2662864c573d822bf4dca")

print(track_list[0].prettify())

trs = track_list[0].select("tr")

for tr in trs:

print(tr.text)

track_data_list =[] for track_info in track_list: name = track_info.select("tr")[0] # 코드 가독성을 위해 변수 이름을 좀 더 간단하게 변경 tag = track_info.select("tr")[2] hardness = track_info.select("tr")[3] laps = track_info.select("tr")[4] track_length = track_info.select("tr")[5] direction = track_info.select("tr")[6] playmode = track_info.select("tr")[7] AI = track_info.select("tr")[8]

서버는 수집에서 제외

release_date  = track_info.select("tr")[10]
league_track  = track_info.select("tr")[11]
license  = track_info.select("tr")[12]
nickname  = track_info.select("tr")[13]

track_data_list.append(
    [
        name.text,
        tag.text,
        hardness.text[3:],
        laps.text[1:],
        track_length.text[5:],
        direction.text[5:],
        playmode.text[5:],
        AI.text[5:],
        release_date.text[5:],
        league_track.text[5:],
        license.text[4:],
        nickname.text[2:]
    ]
)

columns = ["트랙 이름", "태그", "난이도", "랩", "트랙 길이", "진행 방향", "트랙 분류", "AI 주행", "첫 등장일", "리그 트랙", "라이센스", "약칭"] df = pd.DataFrame(track_data_list, columns = columns) df

driver.close()



## 2. 진행 할 것 
-  (1) TMI 데이터와 나무위키 데이터 연결
-  (2) 트랙에 대한 유저 반응 데이터 스크래핑 시도 (TMI 트랙 리뷰, 커뮤니티)
JiyoonLee18 commented 1 year ago

2022.10.22의 성과

나무위키 크롤링

image

▲ 하이라이트한 부분 클래스 이름 변경됨! 전부 변경이 필요함

hhyojjin commented 1 year ago

위의 내용에서 나무위키에서 데이터 크롤링 할 때 '표를 가져오는 html 부분의 table class 명'은 사이트에서 변경이 발생할 때 변경하면 됩니다. 각 링크별 변경은 아니에요. 일괄 변경이기 때문에 변경 발생시 1회 변경으로 대처하면 될 것 같습니다.