Skip to content

Commit

Permalink
#4 나무위키 트랙 정보 크롤링 테스트 코드 - 1920테마
Browse files Browse the repository at this point in the history
  • Loading branch information
goodkse7 authored Oct 20, 2022
1 parent fef7241 commit 9ae6dc7
Showing 1 changed file with 260 additions and 0 deletions.
260 changes: 260 additions & 0 deletions 221013 나무위키 트랙 정보 크롤링.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,260 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"id": "64523b0f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/z_/w5_jprkx4n9grd7jx_1lqz8r0000gn/T/ipykernel_6098/2399819394.py:10: DeprecationWarning: executable_path has been deprecated, please pass in a Service object\n",
" driver = webdriver.Chrome(executable_path='/Users/kimsieun/Documents/Daitgirls/FinalProject/chromedriver')\n"
]
}
],
"source": [
"from selenium import webdriver\n",
"from bs4 import BeautifulSoup\n",
"from selenium.webdriver.chrome.service import Service\n",
"from webdriver_manager.chrome import ChromeDriverManager\n",
"import pandas as pd\n",
"\n",
"chrome_optios = webdriver.ChromeOptions()\n",
"# driver = webdriver.Chrome(service=Service(ChromeDriverManager(os_type=\"mac_arm64\").install()))\n",
"# driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_option)\n",
"driver = webdriver.Chrome(executable_path='/Users/kimsieun/Documents/Daitgirls/FinalProject/chromedriver')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "1f6b0467",
"metadata": {},
"outputs": [],
"source": [
"# 크롤링할 주소 설정\n",
"url = 'https://namu.wiki/w/%ED%81%AC%EB%A0%88%EC%9D%B4%EC%A7%80%EB%A0%88%EC%9D%B4%EC%8B%B1%20%EC%B9%B4%ED%8A%B8%EB%9D%BC%EC%9D%B4%EB%8D%94/%ED%8A%B8%EB%9E%99/1920' #카트 트랙 랭킹 \n",
"driver.get(url)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "ed5db561",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1920 수상한 증기 공장\n",
" \n",
"러쉬플러스\n",
"난이도●●○○○\n",
"랩3바퀴\n",
"트랙 길이9.5km\n",
"진행 방향시계방향\n",
"트랙 분류아이템전\n",
"AI 주행X\n",
"서버 \n",
"첫 등장일2013년 12월 26일\n",
"리그 트랙-\n",
"라이센스모바일: 루키\n",
"약칭증기공장\n"
]
}
],
"source": [
"# 소스를 읽어 BeatuifulSoup를 이용해 파싱\n",
"html = driver.page_source # 브라우저가 가지고 있는 정보를 가져옴\n",
"soup = BeautifulSoup(html, \"html.parser\")\n",
"track_list = soup.select(\"table.UQjgK8i0._f0b7325cc9e2662864c573d822bf4dca\")\n",
"# print(track_list[0].prettify())\n",
"trs = track_list[0].select(\"tr\") \n",
"for tr in trs:\n",
" print(tr.text)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "91cb0379",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>트랙 이름</th>\n",
" <th>태그</th>\n",
" <th>난이도</th>\n",
" <th>랩</th>\n",
" <th>트랙 길이</th>\n",
" <th>진행 방향</th>\n",
" <th>트랙 분류</th>\n",
" <th>AI 주행</th>\n",
" <th>첫 등장일</th>\n",
" <th>리그 트랙</th>\n",
" <th>라이센스</th>\n",
" <th>약칭</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1920 수상한 증기 공장</td>\n",
" <td>러쉬플러스</td>\n",
" <td>●●○○○</td>\n",
" <td>3바퀴</td>\n",
" <td>9.5km</td>\n",
" <td>시계방향</td>\n",
" <td>아이템전</td>\n",
" <td>X</td>\n",
" <td>2013년 12월 26일</td>\n",
" <td>-</td>\n",
" <td>모바일: 루키</td>\n",
" <td>증기공장</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1920 기차역 질주</td>\n",
" <td></td>\n",
" <td>●●○○○[구3]</td>\n",
" <td>2바퀴</td>\n",
" <td>8.6km</td>\n",
" <td>시계방향</td>\n",
" <td>스피드전</td>\n",
" <td>X</td>\n",
" <td>2013년 12월 26일</td>\n",
" <td>-</td>\n",
" <td>-</td>\n",
" <td>기차역</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1920 아슬아슬 비행장</td>\n",
" <td>노멀 러쉬플러스</td>\n",
" <td>●●●○○[구2]</td>\n",
" <td>2바퀴</td>\n",
" <td>10.5km[8]</td>\n",
" <td>시계방향</td>\n",
" <td>스피드전</td>\n",
" <td>X</td>\n",
" <td>2014년 1월 23일</td>\n",
" <td>-</td>\n",
" <td>모바일: 루키</td>\n",
" <td>1920, 1920비행장</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 트랙 이름 태그 난이도 랩 트랙 길이 진행 방향 트랙 분류 AI 주행 \\\n",
"0 1920 수상한 증기 공장 러쉬플러스 ●●○○○ 3바퀴 9.5km 시계방향 아이템전 X \n",
"1 1920 기차역 질주 ●●○○○[구3] 2바퀴 8.6km 시계방향 스피드전 X \n",
"2 1920 아슬아슬 비행장 노멀 러쉬플러스 ●●●○○[구2] 2바퀴 10.5km[8] 시계방향 스피드전 X \n",
"\n",
" 첫 등장일 리그 트랙 라이센스 약칭 \n",
"0 2013년 12월 26일 - 모바일: 루키 증기공장 \n",
"1 2013년 12월 26일 - - 기차역 \n",
"2 2014년 1월 23일 - 모바일: 루키 1920, 1920비행장 "
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"track_data_list =[]\n",
"for track_info in track_list:\n",
" name = track_info.select(\"tr\")[0] # 코드 가독성을 위해 변수 이름을 좀 더 간단하게 변경\n",
" tag = track_info.select(\"tr\")[2]\n",
" hardness = track_info.select(\"tr\")[3]\n",
" laps = track_info.select(\"tr\")[4]\n",
" track_length = track_info.select(\"tr\")[5]\n",
" direction = track_info.select(\"tr\")[6]\n",
" playmode = track_info.select(\"tr\")[7]\n",
" AI = track_info.select(\"tr\")[8]\n",
" # 서버는 수집에서 제외\n",
" release_date = track_info.select(\"tr\")[10]\n",
" league_track = track_info.select(\"tr\")[11]\n",
" license = track_info.select(\"tr\")[12]\n",
" nickname = track_info.select(\"tr\")[13]\n",
" \n",
" track_data_list.append(\n",
" [\n",
" name.text,\n",
" tag.text,\n",
" hardness.text[3:],\n",
" laps.text[1:],\n",
" track_length.text[5:],\n",
" direction.text[5:],\n",
" playmode.text[5:],\n",
" AI.text[5:],\n",
" release_date.text[5:],\n",
" league_track.text[5:],\n",
" license.text[4:],\n",
" nickname.text[2:]\n",
" ]\n",
" )\n",
"\n",
"columns = [\"트랙 이름\", \"태그\", \"난이도\", \"\", \"트랙 길이\", \"진행 방향\", \"트랙 분류\", \"AI 주행\", \"첫 등장일\", \"리그 트랙\", \"라이센스\", \"약칭\"]\n",
"df = pd.DataFrame(track_data_list, columns = columns)\n",
"df\n",
"\n",
"# driver.close()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3105fe41",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

0 comments on commit 9ae6dc7

Please sign in to comment.