diff --git "a/221013 \353\202\230\353\254\264\354\234\204\355\202\244 \355\212\270\353\236\231 \354\240\225\353\263\264 \355\201\254\353\241\244\353\247\201.ipynb" "b/221013 \353\202\230\353\254\264\354\234\204\355\202\244 \355\212\270\353\236\231 \354\240\225\353\263\264 \355\201\254\353\241\244\353\247\201.ipynb" new file mode 100644 index 0000000..aa44075 --- /dev/null +++ "b/221013 \353\202\230\353\254\264\354\234\204\355\202\244 \355\212\270\353\236\231 \354\240\225\353\263\264 \355\201\254\353\241\244\353\247\201.ipynb" @@ -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": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
트랙 이름태그난이도트랙 길이진행 방향트랙 분류AI 주행첫 등장일리그 트랙라이센스약칭
01920 수상한 증기 공장러쉬플러스●●○○○3바퀴9.5km시계방향아이템전X2013년 12월 26일-모바일: 루키증기공장
11920 기차역 질주●●○○○[구3]2바퀴8.6km시계방향스피드전X2013년 12월 26일--기차역
21920 아슬아슬 비행장노멀 러쉬플러스●●●○○[구2]2바퀴10.5km[8]시계방향스피드전X2014년 1월 23일-모바일: 루키1920, 1920비행장
\n", + "
" + ], + "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 +}