From 61b965142c33444d57e9062379927e80601bdffa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=9C=A0=EC=98=81?= <85043991+uuyeong@users.noreply.github.com> Date: Fri, 19 Sep 2025 14:32:23 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Feat]=20=EC=A0=95=EC=A0=81=ED=81=AC?= =?UTF-8?q?=EB=A1=A4=EB=A7=81=EA=B3=BC=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes dynamic-crawling/yanolja.ipynb | 65 +- .../jisigin-checkpoint.ipynb | 276 ++ static-crawling/aladin_bestseller.csv | 126 + static-crawling/jisigin.ipynb | 1534 +++++- static-crawling/jisigin.xlsx | Bin 0 -> 7090 bytes .../static-crawling_assignment.ipynb | 4245 ++++++++++++++++- 7 files changed, 6143 insertions(+), 103 deletions(-) create mode 100644 .DS_Store create mode 100644 static-crawling/.ipynb_checkpoints/jisigin-checkpoint.ipynb create mode 100644 static-crawling/aladin_bestseller.csv create mode 100644 static-crawling/jisigin.xlsx diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0619a28515bff37b4ed38fc7a1df9272d2fb40a0 GIT binary patch literal 6148 zcmeHKJ5EC}5S)b+ktj$>=?hSB11kzA-~vD*5K=@Wl8E+IoQtC|`)QsYR1r-yE3L;~ z@7VGbZ{Gs2<#BTdEC9^uj`;FnYQFD2v5Sfrk42N+Zy#%p&fY=L%L`G~;gFbgST!G3H(PZm7Ps^K7U{5_ zs8I??fw2OYxm=2.5.0 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from urllib3[socks]<3.0,>=2.5.0->selenium) (2.5.0)\n", + "Requirement already satisfied: trio~=0.30.0 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from selenium) (0.30.0)\n", + "Requirement already satisfied: trio-websocket~=0.12.2 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from selenium) (0.12.2)\n", + "Requirement already satisfied: certifi>=2025.6.15 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from selenium) (2025.8.3)\n", + "Requirement already satisfied: typing_extensions~=4.14.0 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from selenium) (4.14.1)\n", + "Requirement already satisfied: websocket-client~=1.8.0 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from selenium) (1.8.0)\n", + "Requirement already satisfied: attrs>=23.2.0 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from trio~=0.30.0->selenium) (25.3.0)\n", + "Requirement already satisfied: sortedcontainers in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from trio~=0.30.0->selenium) (2.4.0)\n", + "Requirement already satisfied: idna in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from trio~=0.30.0->selenium) (3.10)\n", + "Requirement already satisfied: outcome in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from trio~=0.30.0->selenium) (1.3.0.post0)\n", + "Requirement already satisfied: sniffio>=1.3.0 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from trio~=0.30.0->selenium) (1.3.1)\n", + "Requirement already satisfied: exceptiongroup in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from trio~=0.30.0->selenium) (1.2.0)\n", + "Requirement already satisfied: wsproto>=0.14 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from trio-websocket~=0.12.2->selenium) (1.2.0)\n", + "Requirement already satisfied: pysocks!=1.5.7,<2.0,>=1.5.6 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from urllib3[socks]<3.0,>=2.5.0->selenium) (1.7.1)\n", + "Requirement already satisfied: h11<1,>=0.9.0 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from wsproto>=0.14->trio-websocket~=0.12.2->selenium) (0.16.0)\n", + "Requirement already satisfied: bs4 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (0.0.2)\n", + "Requirement already satisfied: beautifulsoup4 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from bs4) (4.13.5)\n", + "Requirement already satisfied: soupsieve>1.2 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from beautifulsoup4->bs4) (2.8)\n", + "Requirement already satisfied: typing-extensions>=4.0.0 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from beautifulsoup4->bs4) (4.14.1)\n", + "Requirement already satisfied: pandas in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (2.3.2)\n", + "Requirement already satisfied: numpy>=1.22.4 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2.2.6)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2025.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2025.2)\n", + "Requirement already satisfied: six>=1.5 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n", + "Requirement already satisfied: openpyxl in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (3.1.5)\n", + "Requirement already satisfied: et-xmlfile in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from openpyxl) (2.0.0)\n" + ] + } + ], "source": [ "!pip install selenium\n", "!pip install bs4\n", @@ -32,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -40,7 +75,7 @@ "import time\n", "\n", "# Selenium 드라이버 설정 (Chrome 사용)\n", - "# driver = \n", + "driver = webdriver.Chrome()\n", "\n", "# Yanolja 리뷰 페이지로 이동\n", "url = 'https://www.yanolja.com/reviews/domestic/10041505'\n", @@ -66,9 +101,21 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'driver' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mbs4\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BeautifulSoup\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# 웹페이지 소스 가져오기\u001b[39;00m\n\u001b[0;32m----> 4\u001b[0m page_source \u001b[38;5;241m=\u001b[39m \u001b[43mdriver\u001b[49m\u001b[38;5;241m.\u001b[39mpage_source\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# BeautifulSoup를 사용하여 HTML 파싱\u001b[39;00m\n\u001b[1;32m 7\u001b[0m soup \u001b[38;5;241m=\u001b[39m BeautifulSoup(page_source, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhtml.parser\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "\u001b[0;31mNameError\u001b[0m: name 'driver' is not defined" + ] + } + ], "source": [ "from bs4 import BeautifulSoup\n", "\n", @@ -280,9 +327,9 @@ ], "metadata": { "kernelspec": { - "display_name": "myenv", + "display_name": "hateslop (Python 3.10.18)", "language": "python", - "name": "python3" + "name": "hateslop" }, "language_info": { "codemirror_mode": { @@ -294,7 +341,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.9" + "version": "3.10.18" } }, "nbformat": 4, diff --git a/static-crawling/.ipynb_checkpoints/jisigin-checkpoint.ipynb b/static-crawling/.ipynb_checkpoints/jisigin-checkpoint.ipynb new file mode 100644 index 0000000..2b1da00 --- /dev/null +++ b/static-crawling/.ipynb_checkpoints/jisigin-checkpoint.ipynb @@ -0,0 +1,276 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 네이버 지식인 페이지 정적 크롤링\n", + "정적 크롤링을 통해 네이버 지식인 페이지에서 데이터를 추출하는 방법을 학습합니다." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. 필요한 라이브러리 설치 및 임포트\n", + "먼저, 웹 크롤링을 위해 필요한 라이브러리들을 설치하고 임포트합니다.\n", + "\n", + "- bs4: BeautifulSoup 라이브러리는 HTML/XML 페이지를 파싱하여 데이터를 쉽게 추출할 수 있게 도와줍니다.\n", + "- requests: HTTP 요청을 보내 웹 페이지의 HTML을 받아오는 라이브러리입니다.\n", + "- pandas: 데이터를 표 형태로 처리하고, 엑셀 파일로 저장하는 데 사용됩니다.\n", + "- openpyxl: pandas가 엑셀 파일을 처리할 수 있도록 도와주는 라이브러리입니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mFailed to start Jupyter in the environment 'Python 3.11.2 64-bit (/usr/local/bin/python3)'. \n", + "ImportError: cannot import name 'notebookapp' from 'notebook' (/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/notebook/__init__.py) \n", + "View Jupyter log for further details." + ] + } + ], + "source": [ + "!pip install bs4\n", + "!pip install requests\n", + "!pip install pandas\n", + "!pip install openpyxl" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. HTML 페이지 불러오기 및 파싱\n", + "이제 웹 페이지를 불러와서 HTML을 파싱하여 필요한 데이터를 추출하는 작업을 시작합니다.\n", + "\n", + "- requests.get(url): 지정한 URL에 HTTP GET 요청을 보냅니다.\n", + "- BeautifulSoup(html, 'html.parser'): 응답 받은 HTML을 BeautifulSoup을 사용해 파싱합니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from bs4 import BeautifulSoup\n", + "import requests\n", + "\n", + "# 네이버 지식인 삼성전자 검색 페이지 URL\n", + "url = \"https://kin.naver.com/search/list.naver?query=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90\"\n", + "response = # 요청 보내기\n", + "html = # 응답 받은 HTML 문서\n", + "soup = # BeautifulSoup으로 파싱\n", + "soup" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. 특정 HTML 요소 선택\n", + "크롤링할 HTML 요소를 선택하기 위해 CSS 선택자를 사용하여 데이터를 추출합니다.\n", + "\n", + "- soup.select_one(): CSS 선택자를 사용하여 첫 번째 일치하는 요소를 선택합니다.\n", + "- tree: 선택된 HTML 요소(첫 번째 질문)에 대한 정보를 담고 있습니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 첫 번째 질문 요소 선택\n", + "tree = \n", + "tree # 첫 번째 질문의 HTML 구조를 출력하여 확인" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. 정보 추출: 제목, 링크, 날짜, 카테고리, 답변수\n", + "선택한 HTML 요소에서 원하는 데이터를 추출합니다.\n", + "\n", + "- title_tag.text: title_tag 요소에서 텍스트(제목)를 추출합니다.\n", + "- title_tag.attrs['href']: title_tag 요소에서 링크를 추출합니다.\n", + "- date_tag.text, category_tag.text: 각각 작성일과 카테고리를 추출합니다.\n", + "- hit_tag.text.split(): 답변수를 추출하고 불필요한 문자를 제거합니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 제목과 링크 추출\n", + "title_tag = \n", + "title = \n", + "link = \n", + "print(title, link)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 날짜 추출\n", + "date_tag = \n", + "date = \n", + "print(date)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 카테고리 추출\n", + "category_tag = \n", + "category = \n", + "print(category)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4\n" + ] + } + ], + "source": [ + "# 조회수 추출\n", + "hit_tag = \n", + "texts = \n", + "# hit = \n", + "print(hit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5. 한 페이지에서 모든 질문 정보 추출\n", + "한 페이지에 여러 질문이 있을 때, 모든 질문의 정보를 추출합니다.\n", + "\n", + "- soup.select(): 여러 개의 요소를 선택하여 리스트로 반환합니다.\n", + "- 각 질문에 대해 for 루프를 돌며 제목, 링크, 날짜, 카테고리, 조회수를 추출합니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 여러 질문 정보 추출\n", + "trees = soup.select(\".basic1 > li > dl\")\n", + "for tree in trees:\n", + " title = tree.select_one(\"._nclicks\\\\:kin\\\\.txt\").text\n", + " link = tree.select_one(\"._nclicks\\\\:kin\\\\.txt\").attrs['href']\n", + " date = tree.select_one(\".txt_inline\").text\n", + " category = tree.select_one(\"._nclicks\\\\:kin\\\\.cat2\").text\n", + " hit = tree.select_one(\".hit\").text.split()[1]\n", + " \n", + " # 출력\n", + " print(title, link, date, category, hit)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6. 여러 페이지 크롤링\n", + "페이지를 변경하면서 여러 페이지의 데이터를 크롤링합니다.\n", + "\n", + "- for page_num in range(1, 4): 1페이지부터 3페이지까지 순차적으로 크롤링합니다.\n", + "- 각 페이지에서 데이터를 추출하여 data 리스트에 추가하고, 이를 pandas DataFrame으로 변환하여 엑셀 파일로 저장합니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 여러 페이지에서 정보 추출\n", + "data = []\n", + "for page_num in range(1, 4): # 1~3페이지 크롤링\n", + " url = f\"https://kin.naver.com/search/list.naver?query=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&page={page_num}\"\n", + " response = requests.get(url)\n", + " html = response.text\n", + " soup = BeautifulSoup(html, 'html.parser')\n", + " trees = soup.select(\".basic1 > li > dl\")\n", + " \n", + " for tree in trees:\n", + " ################\n", + " \n", + " # 데이터를 리스트에 추가\n", + " data.append([title, link, date, category, hit])\n", + "\n", + "# DataFrame으로 변환\n", + "import pandas as pd\n", + "df = " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 7. 결과 저장\n", + "위의 크롤링한 데이터를 엑셀 파일로 저장합니다.\n", + "\n", + "- df.to_excel(): 추출한 데이터를 엑셀 파일로 저장합니다. index=False를 설정하여 인덱스를 제외하고 저장합니다." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# pandas를 사용해 엑셀로 저장" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.9.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/static-crawling/aladin_bestseller.csv b/static-crawling/aladin_bestseller.csv new file mode 100644 index 0000000..529aa62 --- /dev/null +++ b/static-crawling/aladin_bestseller.csv @@ -0,0 +1,126 @@ +title_text,title_link,price,review +흔한남매 20,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371918127,"15,120원",10.0 +호의에 대하여,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370615846,"16,920원",8.6 +지박소년 하나코 군 24 (더블 특장판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372013611,"5,400원",10.0 +렛뎀 이론,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369493586,"18,000원",9.8 +절창,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371723601,"16,200원",9.3 +혼모노,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=361016676,"16,200원",8.7 +양면의 조개껍데기,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370247727,"15,750원",9.3 +형이상학의 근본개념들,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370422490,"31,500원",10.0 +가라오케 가자!,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=292511593,"7,650원",9.6 +시대예보: 경량문명의 탄생,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370922260,"19,800원",9.3 +"2025 큰별쌤 최태성의 별★별한국사 한국사능력검정시험 심화(1, 2, 3급) 상",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=353981757,"14,850원",9.6 +패밀리 레스토랑 가자. 上,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=337054427,"7,650원",9.7 +모순,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=25843736,"11,700원",9.1 +"2025 큰별쌤 최태성의 별★별한국사 한국사능력검정시험 심화(1, 2, 3급) 하",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=353981994,"14,400원",9.0 +트렌드 코리아 2026,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371447935,"18,000원",10.0 +안녕이라 그랬어,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=365665217,"15,120원",9.6 +실패를 통과하는 일,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370633659,"18,000원",9.6 +다정한 사람이 이긴다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369431565,"17,100원",9.2 +소설 보다 : 가을 2025,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372103996,"4,950원",8.5 +"빠졌어, 너에게",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=269056986,"7,650원",9.6 +"여름, 연루",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369889904,"12,600원",10.0 +체인소 맨 20,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371535926,"5,400원",10.0 +박곰희 연금 부자 수업,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366615290,"18,900원",9.7 +팩트풀니스 (50만 부 뉴에디션),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=345384332,"21,420원",9.1 +위버멘쉬,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=359025448,"16,020원",9.6 +어른의 관계를 가꾸는 100일 필사 노트,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370131831,"18,000원",9.9 +ETS 토익 정기시험 기출문제집 1000 Vol. 4 Reading (리딩),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=330109498,"17,820원",10.0 +ETF 투자의 모든 것,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368941145,"18,900원",9.9 +ETS 토익 정기시험 기출문제집 1000 Vol. 4 Listening (리스닝),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=330109271,"17,820원",10.0 +우리는 언제나 다시 만나,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=113482584,"10,800원",9.7 +"2025 큰별쌤 최태성의 별★별한국사 기출 500제 한국사능력검정시험 심화 (1, 2, 3급)",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=354080547,"17,550원",10.0 +편안함의 습격,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366122829,"19,800원",9.3 +여학교의 별 1,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=286633169,"7,650원",9.4 +공포의 편도선,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371446214,"13,500원",10.0 +노인과 바다 (먼슬리 클래식),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371794439,"7,200원",9.5 +달러 자산 1억으로 평생 월급 완성하라,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369730967,"18,900원",9.7 +내가 없던 어느 밤에,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370615734,"12,600원",10.0 +천천히 다정하게,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371105168,"17,100원",10.0 +저소비 생활,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371178617,"17,100원",9.4 +소년이 온다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=40869703,"13,500원",9.6 +다크 심리학,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368442791,"19,710원",9.0 +세상은 실제로 어떻게 돌아가는가,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=311928120,"19,800원",8.7 +읽으면서 바로 써먹는 어린이 공포의 수학 퍼즐 1,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368623856,"11,700원",9.7 +여학교의 별 2,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=293054296,"7,650원",9.8 +급류,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=307692409,"12,600원",7.0 +데뷔 못 하면 죽는 병 걸림 4부 초판 한정 굿즈박스 세트 - 전4권,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370359907,"116,100원",10.0 +가공범,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=367868003,"19,800원",9.2 +이타미 준 나의 건축,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370845525,"20,700원",9.0 +중독은 뇌를 어떻게 바꾸는가,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371105102,"19,800원",9.6 +자몽살구클럽,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368083714,"10,800원",8.3 +경험의 멸종,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=364235991,"17,820원",8.3 +해커스 토익 기출 VOCA (보카),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=176021392,"11,610원",9.2 +단 한 줄만 내 마음에 새긴다고 해도,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=365272060,"21,420원",9.9 +서경석의 한국사 한 권,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=367886946,"16,920원",9.0 +주식 투자의 기쁨,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369563884,"17,820원",9.5 +외계인 자서전,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368012771,"17,100원",9.5 +삼체 0 : 구상섬전,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369462570,"17,010원",9.9 +싱크로나이즈드 바다 아네모네,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371374318,"11,700원",9.6 +류수영의 평생 레시피,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366645662,"22,500원",9.6 +어른의 품격을 채우는 100일 필사 노트,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=358092951,"18,000원",9.4 +궤도,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=365990683,"15,300원",8.4 +2026 써니 행정법총론 기출문제집 - 전2권,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371269314,"41,400원",10.0 +초역 부처의 말,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=339737027,"16,020원",8.6 +과학산문,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370446899,"16,200원",10.0 +"AGI, 천사인가 악마인가",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370146993,"16,200원",10.0 +연의 편지 (리커버 양장본 한정판 패키지),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371721616,"18,900원",8.8 +여학교의 별 3,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=316732827,"7,650원",9.9 +"까불지 마, 인생 안 끝났어",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372250881,"14,310원",10.0 +어른의 행복은 조용하다 (어나더커버),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=362366971,"16,020원",9.1 +여학교의 별 4,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=361704320,"7,650원",9.9 +손끝과 연연 12 (더블특전판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371536728,"5,400원",10.0 +"첫 여름, 완주",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=362755853,"15,300원",9.6 +액스,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370774805,"16,200원",7.4 +키메라의 땅 1,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369731176,"16,020원",9.9 +조용한 회복,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371543057,"19,800원",10.0 +말뚝들,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370152807,"15,120원",9.8 +흔한남매 19,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=362085016,"14,220원",10.0 +채식주의자 (리마스터판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=291370219,"15,300원",8.4 +고전이 답했다 마땅히 가져야 할 부에 대하여,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366270620,"16,020원",10.0 +스토너,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=51001915,"15,120원",9.6 +달리기 인류,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369826411,"18,900원",9.8 +나의 가치,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370133376,"20,700원",9.8 +단 한 번의 삶,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=361141292,"15,120원",9.0 +워런 버핏 바이블 완결판,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369950039,"34,200원",10.0 +어른의 미래,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372003577,"14,400원",10.0 +먼저 온 미래,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366598823,"18,000원",9.2 +사카모토 데이즈 22 (더블 특전판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370424558,"5,850원",10.0 +컵라면은 절대로 불어선 안 돼,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370208455,"12,150원",10.0 +징계를 마칩니다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368010492,"20,700원",10.0 +싯다르타,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=329596,"7,200원",9.1 +포식하는 자본주의,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371200468,"22,500원",10.0 +프로젝트 헤일메리,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=270454373,"19,800원",9.5 +미술관에 스파이가 있다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370673358,"20,700원",9.5 +료의 생각 없는 생각,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=365667648,"18,000원",9.5 +일본어 명카피 필사 노트,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369749028,"18,900원",9.9 +공허의 시대,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371182771,"16,650원",8.9 +키메라의 땅 2,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369731260,"16,020원",10.0 +각성,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368643292,"16,020원",9.8 +어쩌다 리더가 된 당신에게,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370364632,"11,700원",9.5 +듀얼 브레인,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=358739031,"18,900원",7.9 +시든 꽃에 눈물을 3~4 세트 - 전2권,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370920239,"28,800원",9.7 +라이프코드 LIFE Code,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371498209,"19,800원",10.0 +비트코인 없는 미래는 없다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371990345,"27,900원",10.0 +빨간내복야코 안 읽으면 완전 위험한 과학책 3,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368857771,"13,500원",10.0 +폭풍 속으로,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370304048,"15,300원",9.9 +머리 좋은 아이는 이렇게 키웁니다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370622539,"17,010원",10.0 +일본어 무작정 따라하기 완전판,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=298773222,"23,400원",9.8 +주술회전 30 (더블 특장판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369126044,"5,400원",10.0 +책 먹는 여우의 가을 이야기,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369881409,"12,600원",9.3 +작별하지 않는다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=278770576,"15,120원",9.0 +한국의 미래,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371535660,"19,800원",10.0 +긴긴밤,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=263027170,"11,250원",9.6 +여자에 관하여,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=367028290,"15,120원",9.8 +필로스트라토스의 그림들,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369578311,"18,050원",9.0 +2026 써니 행정법총론 핵심집약,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=367329762,"28,800원",10.0 +열 살에 시작하는 데일 카네기 인간관계론,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=367701699,"11,700원",9.5 +캐릭캐릭 체인지! Jewel Joker 주얼 조커 1,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370794176,"5,850원",10.0 +장수경의 삼원소 영문법 - 전3권,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=97085904,"30,600원",10.0 +돈의 심리학 (30만 부 기념 스페셜 에디션),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=328520781,"17,820원",8.4 +노인을 위한 나라는 없다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371997158,"15,300원",9.3 +고전이 답했다 마땅히 살아야 할 삶에 대하여,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=345266070,"15,120원",9.3 +나는 소망한다 내게 금지된 것을,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=189365205,"13,500원",9.5 +단 3개의 미국 ETF로 은퇴하라,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=360948172,"17,820원",9.9 +치즈 이야기,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368907829,"15,300원",9.7 +흔한남매 이무기 3,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=367091916,"14,220원",10.0 diff --git a/static-crawling/jisigin.ipynb b/static-crawling/jisigin.ipynb index 38690be..d0832e4 100644 --- a/static-crawling/jisigin.ipynb +++ b/static-crawling/jisigin.ipynb @@ -23,13 +23,37 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: bs4 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (0.0.2)\n", + "Requirement already satisfied: beautifulsoup4 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from bs4) (4.13.5)\n", + "Requirement already satisfied: soupsieve>1.2 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from beautifulsoup4->bs4) (2.8)\n", + "Requirement already satisfied: typing-extensions>=4.0.0 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from beautifulsoup4->bs4) (4.15.0)\n", + "Requirement already satisfied: requests in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (2.32.5)\n", + "Requirement already satisfied: charset_normalizer<4,>=2 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from requests) (3.4.3)\n", + "Requirement already satisfied: idna<4,>=2.5 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from requests) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from requests) (2.5.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from requests) (2025.8.3)\n", + "Requirement already satisfied: pandas in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (2.3.2)\n", + "Requirement already satisfied: numpy>=1.22.4 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2.2.6)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2025.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2025.2)\n", + "Requirement already satisfied: six>=1.5 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n", + "Requirement already satisfied: openpyxl in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (3.1.5)\n", + "Requirement already satisfied: et-xmlfile in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from openpyxl) (2.0.0)\n" + ] + } + ], "source": [ - "!pip install bs4\n", - "!pip install requests\n", - "!pip install pandas\n", + "%pip install bs4\n", + "%pip install requests\n", + "%pip install pandas\n", "!pip install openpyxl" ] }, @@ -46,18 +70,983 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "\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", + "\t삼성전자 검색결과 : 지식iN\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\"데이터\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "

권장 브라우저 업데이트 안내

\n", + "
\n", + "
\n", + "

권장 브라우저 안내

\n", + "
\n", + "
\n", + "

혹시 아직 인터넷 익스플로러 9.0 미만 버전을 사용하고 계신가요?

\n", + "

새롭게 바뀐 지식iN Q&A 페이지는 IE 9.0 이상의 브라우저에 최적화되어 있습니다. 원활한 이용을 위해 꼭 업데이트 해주세요! 업데이트하기

\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "

\n", + "NAVER\n", + "

\n", + "

\n", + "지식iN\n", + "

\n", + "
\n", + "

검색영역

\n", + "
\n", + "
\n", + "지식인 검색\n", + "
\n", + "\n", + "\n", + "자동완성 열기\n", + "\n", + "
\n", + "\n", + "
\n", + "지식iN 검색\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "실시간 공지사항\n", + "\n", + "
\n", + "
\n", + "\n", + "eXpert\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", + "\t\n", + "\t\n", + "\t\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "

\n", + "생명은 소중합니다.! 지금,희망을 클릭하세요.\n", + "

\n", + "\n", + "
\n", + "
\n", + "\n", + "
\n", + "

\n", + "\"전체\n", + "(1-10/955,475)\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", + "
    2025.08.25.
    \n", + "
    삼성전자가면 벤큐 ZOWIE XL2540K 제품 파나요? 안녕하세요. 벤큐 코리아 입니다. 삼성 대리점의 경우 삼성 제품만 판매 하는 것으로 알고 있습니다. 벤큐 모니터는...
    \n", + "
    \n", + "
    \n", + "
    \n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 모니터\n", + "|\n", + "답변수 5 UP 1\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
    \n", + "
    \n", + "
  • \n", + "
  • \n", + "
    \n", + "
    \n", + "삼성전자 주식\n", + "\"지식파트너\n", + "
    \n", + "
    2025.07.30.
    \n", + "
    지금 삼성전자 주식 들어가도 될까요 안녕하세요?... 삼성전자 2025년 하반기 주가 전망은 얼마까지 갈 수 있는지... 전반적으로 삼성전자의 2025년 하반기 주가는 긍정적인...
    \n", + "
    \n", + "
    \n", + "
    \n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 주식, 증권\n", + "|\n", + "답변수 19 UP 57\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
    \n", + "
    \n", + "
  • \n", + "
  • \n", + "
    \n", + "
    \n", + "삼성전자 DS부문 면접 준비에 필요한 팁은?\n", + "
    \n", + "
    2025.08.27.
    \n", + "
    삼성전자 DS부문 채용 과정 중 면접 준비에 대해 궁금합니다. 직무 면접과 임원 면접... 삼성전자 DB부문 면접준비 삼성면접관 출신의 대표코치님과 1:1로 기업, 직무분석 직무...
    \n", + "
    \n", + "#오늘숏텐츠\n", + "#삼성전자\n", + "#DS부문\n", + "#면접준비\n", + "#취업팁\n", + "
    \n", + "
    \n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 생산, 기술\n", + "|\n", + "답변수 3 UP 3\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
    \n", + "
    \n", + "
  • \n", + "
  • \n", + "
    \n", + "
    \n", + "삼성전자 로고 있는 마우스패드\n", + "
    \n", + "
    2025.09.03.
    \n", + "
    삼성전자에서는 마우스패드 안만드나요? 삼성 로고 있는 마우스패드는 못구하나요?... 네 개인 커스텀 의뢰 아닌이상 삼성전자 로고가 들어간 마우스 패드는 나오는게...
    \n", + "
    \n", + "
    \n", + "
    \n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 키보드, 마우스\n", + "|\n", + "답변수 4 UP 0\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t|\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t답변 \n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t\t\"TOP\n", + "\t\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t컴잘알(xb****)\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
    \n", + "
    \n", + "
  • \n", + "
  • \n", + "
    \n", + "
    \n", + "삼성전자 냉장고 소음\n", + "
    \n", + "
    2025.08.19.
    \n", + "
    2025년 6월에 삼성전자 냉장고 구입했습니다. 설치하고 소음이... ㅜㅜ 요즘 삼성전자 냉장고 다 이런건가요? 안녕하세요 삼성전자 생활가전 담당입니다. 제품 사용에 불편을...
    \n", + "
    \n", + "
    \n", + "
    \n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 손해배상\n", + "|\n", + "답변수 1 UP 0\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
    \n", + "
    \n", + "
  • \n", + "
  • \n", + "
    \n", + "
    \n", + "쿠팡 삼성 전자 제품\n", + "
    \n", + "
    2025.08.21.
    \n", + "
    쿠팡에 입점되어있는 삼성전자 공식몰 제품 가격과 삼성전자 홈페이지에서 구매할 수... 쿠팡 및 삼성닷컴에서 판매되는 삼성전자 제품의 기준가(정가)는 동일합니다. 동일한...
    \n", + "
    \n", + "#삼성전자\n", + "#유통\n", + "#쿠팡\n", + "#최저가\n", + "
    \n", + "
    \n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 가전제품\n", + "|\n", + "답변수 3 UP 0\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
    \n", + "
    \n", + "
  • \n", + "
  • \n", + "
    \n", + "
    \n", + "삼성전자 스탠드 에어컨\n", + "
    \n", + "
    2025.09.03.
    \n", + "
    삼성전자 스탠드 에어컨 1년조금 넘었는데 냄새가 조금 나는거 같아서 기사를 부를려고 하는데 삼성전자 스탠드 에어컨 청소는 비용이 평균 얼마들나요 삼성전자 스탠드...
    \n", + "
    \n", + "
    \n", + "
    \n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 청소, 주방, 계절 가전\n", + "|\n", + "답변수 4 UP 1\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
    \n", + "
    \n", + "
  • \n", + "
  • \n", + "
    \n", + "
    \n", + "삼성전자 5급 채용\n", + "\"지식파트너\n", + "
    \n", + "
    2024.11.13.
    \n", + "
    2024 삼성전자 DS 5급 하반기 채용을 기다리는 중입니다. 삼성전자 DS 실적이 좋지 못하다고 들어서 채용이... 삼성전자 DS 5급 하반기 채용이 2024년 11월 11일부로...
    \n", + "
    \n", + "#삼성전자\n", + "#채용\n", + "#일자리\n", + "#반도체\n", + "#DS\n", + "#취업\n", + "#대기업\n", + "#고졸\n", + "#삼성\n", + "
    \n", + "
    \n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 생산, 기술\n", + "|\n", + "답변수 3 UP 3\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t|\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t답변 \n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\thack****\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
    \n", + "
    \n", + "
  • \n", + "
  • \n", + "
    \n", + "
    \n", + "삼성전자 상간녀소송중인데요. 상간녀가\n", + "\"변호사답변\"\n", + "
    \n", + "
    2025.05.27.
    \n", + "
    삼성전자 상간녀소송중인데요. 상간녀가 정신을 못차리고 변호사를 선임했다고 하네요. 둘다 삼성전자 아산에... 질문자님께서는 현재 삼성전자 상간녀를 상대로 소송...
    \n", + "
    \n", + "#삼성전자\n", + "#상간녀\n", + "#이혼소송\n", + "#삼성\n", + "#검색질문\n", + "#통합검색궁금증\n", + "#통합검색질문하기\n", + "
    \n", + "
    \n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 가족, 이혼\n", + "|\n", + "답변수 3 UP 0\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
    \n", + "
    \n", + "
  • \n", + "
  • \n", + "
    \n", + "
    \n", + "삼성전자 에어컨 청소\n", + "
    \n", + "
    2025.08.11.
    \n", + "
    삼성전자 에어컨청소 기사 맡길려면 어디로 전화 해야되나요 삼성전자 고객센터에 전화해 보세요 서비스 요청을 도와줄 수 있어요 전화번호는 1588-3366입니다!
    \n", + "
    \n", + "
    \n", + "
    \n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 청소, 주방, 계절 가전\n", + "|\n", + "답변수 9 UP 0\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
    \n", + "
    \n", + "
  • \n", + "
\n", + "
\n", + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n", + "9\n", + "10\n", + "다음페이지\n", + "
\n", + "\n", + "
\n", + "

\n", + "'삼성전자' 에 대한 궁금증을 해결하지 못하셨다면 직접 질문해보세요!
\n", + "\t\t\t\t내 궁금증에 맞는 더 정확한 답변을 받을 수 있습니다.\n", + "\t\t\t

\n", + "\"질문하러\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "
\n", + "

\n", + "관련 분야\n", + "

\n", + "
\n", + "
    \n", + "
  • \n", + "전기, 전자 공학\n", + "
    \n", + "

    Q&A>교육, 학문>전기, 전자 공학

    \n", + "
    \n", + "
  • \n", + "
  • \n", + "삼성\n", + "
    \n", + "

    Q&A>IT/테크>전화통신>스마트폰>안드로이드폰>삼성

    \n", + "
    \n", + "
  • \n", + "
  • \n", + "삼성라이온즈\n", + "
    \n", + "

    Q&A>스포츠, 레저>구기스포츠, 레저>야구>프로야구>삼성라이온즈

    \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", + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from bs4 import BeautifulSoup\n", "import requests\n", "\n", "# 네이버 지식인 삼성전자 검색 페이지 URL\n", "url = \"https://kin.naver.com/search/list.naver?query=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90\"\n", - "response = # 요청 보내기\n", - "html = # 응답 받은 HTML 문서\n", - "soup = # BeautifulSoup으로 파싱\n", + "response = requests.get(url) # 요청 보내기\n", + "html = response.text # 응답 받은 HTML 문서\n", + "soup = BeautifulSoup(html, 'html.parser') # BeautifulSoup으로 파싱\n", "soup" ] }, @@ -74,12 +1063,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "
\n", + "
\n", + "삼성전자에 벤큐 모니터 파나요\n", + "\"지식파트너\n", + "
\n", + "
2025.08.25.
\n", + "
삼성전자가면 벤큐 ZOWIE XL2540K 제품 파나요? 안녕하세요. 벤큐 코리아 입니다. 삼성 대리점의 경우 삼성 제품만 판매 하는 것으로 알고 있습니다. 벤큐 모니터는...
\n", + "
\n", + "
\n", + "
\n", + "Q&A\n", + "\t\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\t\t > 모니터\n", + "|\n", + "답변수 5 UP 1\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t\n", + "\t\t\t\t\t\t\t
\n", + "
" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# 첫 번째 질문 요소 선택\n", - "tree = \n", + "tree = soup.select_one('.basic1 > li > dl')\n", "tree # 첫 번째 질문의 HTML 구조를 출력하여 확인" ] }, @@ -98,59 +1116,84 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "삼성전자에 벤큐 모니터 파나요 https://kin.naver.com/qna/detail.naver?d1id=1&dirId=1010401&docId=488053141&qb=7IK87ISx7KCE7J6Q&enc=utf8\n" + ] + } + ], "source": [ "# 제목과 링크 추출\n", - "title_tag = \n", - "title = \n", - "link = \n", - "print(title, link)\n" + "title_tag = tree.select_one('a._nclicks\\\\:kin\\\\.txt._searchListTitleAnchor')\n", + "title = title_tag.text\n", + "link = title_tag.attrs['href']\n", + "print(title, link)\n", + "#title_tag\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2025.08.25.\n" + ] + } + ], "source": [ "# 날짜 추출\n", - "date_tag = \n", - "date = \n", + "date_tag = tree.select_one('.txt_inline')\n", + "date = date_tag.text\n", "print(date)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "청소, 주방, 계절 가전\n" + ] + } + ], "source": [ "# 카테고리 추출\n", - "category_tag = \n", - "category = \n", - "print(category)" + "category_tag = tree.select_one('.txt_g1._nclicks\\\\:kin\\\\.cat2')\n", + "category = category_tag.text\n", + "print(category)\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "4\n" + "9\n" ] } ], "source": [ "# 조회수 추출\n", - "hit_tag = \n", - "texts = \n", - "# hit = \n", + "hit_tag = tree.select_one('.hit')\n", + "texts = hit_tag.text\n", + "hit = texts.split()[1]\n", "print(hit)" ] }, @@ -167,9 +1210,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "삼성전자에 벤큐 모니터 파나요 https://kin.naver.com/qna/detail.naver?d1id=1&dirId=1010401&docId=488053141&qb=7IK87ISx7KCE7J6Q&enc=utf8 2025.08.25. 모니터 5\n", + "삼성전자 주식 https://kin.naver.com/qna/detail.naver?d1id=4&dirId=40102&docId=487572786&qb=7IK87ISx7KCE7J6Q&enc=utf8 2025.07.30. 주식, 증권 19\n", + "삼성전자 DS부문 면접 준비에 필요한 팁은? https://kin.naver.com/qna/detail.naver?d1id=4&dirId=40609&docId=486659911&qb=7IK87ISx7KCE7J6Q&enc=utf8 2025.08.27. 생산, 기술 3\n", + "삼성전자 로고 있는 마우스패드 https://kin.naver.com/qna/detail.naver?d1id=5&dirId=5020402&docId=488543373&qb=7IK87ISx7KCE7J6Q&enc=utf8 2025.09.03. 키보드, 마우스 4\n", + "삼성전자 냉장고 소음 https://kin.naver.com/qna/detail.naver?d1id=6&dirId=60213&docId=488077668&qb=7IK87ISx7KCE7J6Q&enc=utf8 2025.08.19. 손해배상 1\n", + "쿠팡 삼성 전자 제품 https://kin.naver.com/qna/detail.naver?d1id=5&dirId=501&docId=488177860&qb=7IK87ISx7KCE7J6Q&enc=utf8 2025.08.21. 가전제품 3\n", + "삼성전자 스탠드 에어컨 https://kin.naver.com/qna/detail.naver?d1id=5&dirId=50104&docId=488562606&qb=7IK87ISx7KCE7J6Q&enc=utf8 2025.09.03. 청소, 주방, 계절 가전 4\n", + "삼성전자 5급 채용 https://kin.naver.com/qna/detail.naver?d1id=4&dirId=40609&docId=477072423&qb=7IK87ISx7KCE7J6Q&enc=utf8 2024.11.13. 생산, 기술 3\n", + "삼성전자 상간녀소송중인데요. 상간녀가 https://kin.naver.com/qna/detail.naver?d1id=6&dirId=60204&docId=302160869&qb=7IK87ISx7KCE7J6Q&enc=utf8 2025.05.27. 가족, 이혼 3\n", + "삼성전자 에어컨 청소 https://kin.naver.com/qna/detail.naver?d1id=5&dirId=50104&docId=487926458&qb=7IK87ISx7KCE7J6Q&enc=utf8 2025.08.11. 청소, 주방, 계절 가전 9\n" + ] + } + ], "source": [ "# 여러 질문 정보 추출\n", "trees = soup.select(\".basic1 > li > dl\")\n", @@ -197,9 +1257,385 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, - "outputs": [], + "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", + " \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", + " \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", + " \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", + "
titlelinkdatacategoryhit
0삼성전자에 벤큐 모니터 파나요https://kin.naver.com/qna/detail.naver?d1id=1&...2025.08.25.모니터5
1삼성전자 주식https://kin.naver.com/qna/detail.naver?d1id=4&...2025.07.30.주식, 증권19
2삼성전자 DS부문 면접 준비에 필요한 팁은?https://kin.naver.com/qna/detail.naver?d1id=4&...2025.08.27.생산, 기술3
3삼성전자 로고 있는 마우스패드https://kin.naver.com/qna/detail.naver?d1id=5&...2025.09.03.키보드, 마우스4
4삼성전자 냉장고 소음https://kin.naver.com/qna/detail.naver?d1id=6&...2025.08.19.손해배상1
5쿠팡 삼성 전자 제품https://kin.naver.com/qna/detail.naver?d1id=5&...2025.08.21.가전제품3
6삼성전자 스탠드 에어컨https://kin.naver.com/qna/detail.naver?d1id=5&...2025.09.03.청소, 주방, 계절 가전4
7삼성전자 5급 채용https://kin.naver.com/qna/detail.naver?d1id=4&...2024.11.13.생산, 기술3
8삼성전자 상간녀소송중인데요. 상간녀가https://kin.naver.com/qna/detail.naver?d1id=6&...2025.05.27.가족, 이혼3
9삼성전자 에어컨 청소https://kin.naver.com/qna/detail.naver?d1id=5&...2025.08.11.청소, 주방, 계절 가전9
10삼성전자 nt301e5l 이모델 cpu 만 따로...https://kin.naver.com/qna/detail.naver?d1id=1&...2025.09.13.CPU2
11삼성전자 주가 전망https://kin.naver.com/qna/detail.naver?d1id=4&...2025.07.30.주식, 증권6
12삼성전자 주가 어떻게될까요?https://kin.naver.com/qna/detail.naver?d1id=4&...2025.08.29.주식, 증권7
13삼성전자대리점에서 소비쿠폰을 사용할...https://kin.naver.com/qna/detail.naver?d1id=5&...2025.08.06.청소, 주방, 계절 가전2
14삼성전자 주식 배당금https://kin.naver.com/qna/detail.naver?d1id=4&...2025.03.12.주식, 증권10
15삼성전자 단체보험https://kin.naver.com/qna/detail.naver?d1id=4&...2025.09.17.의료, 상해 보험3
16삼성전자 갤럭시북4 NT750XGR-A51Ahttps://kin.naver.com/qna/detail.naver?d1id=11...2025.09.12.기계공학2
17오늘 삼성전자 하락 이유 뭔가요?https://kin.naver.com/qna/detail.naver?d1id=4&...2025.08.01.주식, 증권4
18삼성전자 8월 주가 전망은?https://kin.naver.com/qna/detail.naver?d1id=11...2025.08.02.전기, 전자 공학20
19삼성전자 OLED TV가 북미 시장에서 1위를...https://kin.naver.com/qna/detail.naver?d1id=4&...2025.09.08.경제 기관, 단체1
20삼성전자 기업조사 내공!https://kin.naver.com/qna/detail.naver?d1id=4&...2025.09.10.경제 기관, 단체1
21삼성전자 5급제조직 생산 체용https://kin.naver.com/qna/detail.naver?d1id=11...2025.08.08.전기, 전자 공학1
22삼성전자 전망이 어떻게 되나요https://kin.naver.com/qna/detail.naver?d1id=4&...2025.07.10.주식, 증권7
23삼성전자 5급 생산직 고졸https://kin.naver.com/qna/detail.naver?d1id=4&...2025.09.02.생산, 기술2
24삼성전자서비스센터 USB 복구, 수리 가능?https://kin.naver.com/qna/detail.naver?d1id=1&...2025.07.15.외장하드, 저장장치4
25삼성전자 KQ75QND87AFXKR 제품 가치?https://kin.naver.com/qna/detail.naver?d1id=1&...2025.03.27.케이블TV2
26삼성전자 서류 학점입력https://kin.naver.com/qna/detail.naver?d1id=4&...2025.09.02.취업 정책, 제도2
27삼성전자 AI 가전에 적용된 One UI의...https://kin.naver.com/qna/detail.naver?d1id=4&...2025.08.27.경제 기관, 단체2
28삼성전자 사운드바 엘지tv와...https://kin.naver.com/qna/detail.naver?d1id=5&...2024.11.07.영상, 음향 가전5
29삼성전자 투자 현황https://kin.naver.com/qna/detail.naver?d1id=4&...2025.08.19.주식, 증권4
\n", + "
" + ], + "text/plain": [ + " title \\\n", + "0 삼성전자에 벤큐 모니터 파나요 \n", + "1 삼성전자 주식 \n", + "2 삼성전자 DS부문 면접 준비에 필요한 팁은? \n", + "3 삼성전자 로고 있는 마우스패드 \n", + "4 삼성전자 냉장고 소음 \n", + "5 쿠팡 삼성 전자 제품 \n", + "6 삼성전자 스탠드 에어컨 \n", + "7 삼성전자 5급 채용 \n", + "8 삼성전자 상간녀소송중인데요. 상간녀가 \n", + "9 삼성전자 에어컨 청소 \n", + "10 삼성전자 nt301e5l 이모델 cpu 만 따로... \n", + "11 삼성전자 주가 전망 \n", + "12 삼성전자 주가 어떻게될까요? \n", + "13 삼성전자대리점에서 소비쿠폰을 사용할... \n", + "14 삼성전자 주식 배당금 \n", + "15 삼성전자 단체보험 \n", + "16 삼성전자 갤럭시북4 NT750XGR-A51A \n", + "17 오늘 삼성전자 하락 이유 뭔가요? \n", + "18 삼성전자 8월 주가 전망은? \n", + "19 삼성전자 OLED TV가 북미 시장에서 1위를... \n", + "20 삼성전자 기업조사 내공! \n", + "21 삼성전자 5급제조직 생산 체용 \n", + "22 삼성전자 전망이 어떻게 되나요 \n", + "23 삼성전자 5급 생산직 고졸 \n", + "24 삼성전자서비스센터 USB 복구, 수리 가능? \n", + "25 삼성전자 KQ75QND87AFXKR 제품 가치? \n", + "26 삼성전자 서류 학점입력 \n", + "27 삼성전자 AI 가전에 적용된 One UI의... \n", + "28 삼성전자 사운드바 엘지tv와... \n", + "29 삼성전자 투자 현황 \n", + "\n", + " link data \\\n", + "0 https://kin.naver.com/qna/detail.naver?d1id=1&... 2025.08.25. \n", + "1 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.07.30. \n", + "2 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.08.27. \n", + "3 https://kin.naver.com/qna/detail.naver?d1id=5&... 2025.09.03. \n", + "4 https://kin.naver.com/qna/detail.naver?d1id=6&... 2025.08.19. \n", + "5 https://kin.naver.com/qna/detail.naver?d1id=5&... 2025.08.21. \n", + "6 https://kin.naver.com/qna/detail.naver?d1id=5&... 2025.09.03. \n", + "7 https://kin.naver.com/qna/detail.naver?d1id=4&... 2024.11.13. \n", + "8 https://kin.naver.com/qna/detail.naver?d1id=6&... 2025.05.27. \n", + "9 https://kin.naver.com/qna/detail.naver?d1id=5&... 2025.08.11. \n", + "10 https://kin.naver.com/qna/detail.naver?d1id=1&... 2025.09.13. \n", + "11 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.07.30. \n", + "12 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.08.29. \n", + "13 https://kin.naver.com/qna/detail.naver?d1id=5&... 2025.08.06. \n", + "14 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.03.12. \n", + "15 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.09.17. \n", + "16 https://kin.naver.com/qna/detail.naver?d1id=11... 2025.09.12. \n", + "17 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.08.01. \n", + "18 https://kin.naver.com/qna/detail.naver?d1id=11... 2025.08.02. \n", + "19 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.09.08. \n", + "20 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.09.10. \n", + "21 https://kin.naver.com/qna/detail.naver?d1id=11... 2025.08.08. \n", + "22 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.07.10. \n", + "23 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.09.02. \n", + "24 https://kin.naver.com/qna/detail.naver?d1id=1&... 2025.07.15. \n", + "25 https://kin.naver.com/qna/detail.naver?d1id=1&... 2025.03.27. \n", + "26 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.09.02. \n", + "27 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.08.27. \n", + "28 https://kin.naver.com/qna/detail.naver?d1id=5&... 2024.11.07. \n", + "29 https://kin.naver.com/qna/detail.naver?d1id=4&... 2025.08.19. \n", + "\n", + " category hit \n", + "0 모니터 5 \n", + "1 주식, 증권 19 \n", + "2 생산, 기술 3 \n", + "3 키보드, 마우스 4 \n", + "4 손해배상 1 \n", + "5 가전제품 3 \n", + "6 청소, 주방, 계절 가전 4 \n", + "7 생산, 기술 3 \n", + "8 가족, 이혼 3 \n", + "9 청소, 주방, 계절 가전 9 \n", + "10 CPU 2 \n", + "11 주식, 증권 6 \n", + "12 주식, 증권 7 \n", + "13 청소, 주방, 계절 가전 2 \n", + "14 주식, 증권 10 \n", + "15 의료, 상해 보험 3 \n", + "16 기계공학 2 \n", + "17 주식, 증권 4 \n", + "18 전기, 전자 공학 20 \n", + "19 경제 기관, 단체 1 \n", + "20 경제 기관, 단체 1 \n", + "21 전기, 전자 공학 1 \n", + "22 주식, 증권 7 \n", + "23 생산, 기술 2 \n", + "24 외장하드, 저장장치 4 \n", + "25 케이블TV 2 \n", + "26 취업 정책, 제도 2 \n", + "27 경제 기관, 단체 2 \n", + "28 영상, 음향 가전 5 \n", + "29 주식, 증권 4 " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# 여러 페이지에서 정보 추출\n", "data = []\n", @@ -212,13 +1648,20 @@ " \n", " for tree in trees:\n", " ################\n", - " \n", + " title = tree.select_one(\"._nclicks\\\\:kin\\\\.txt\").text\n", + " link = tree.select_one(\"._nclicks\\\\:kin\\\\.txt\").attrs['href']\n", + " date = tree.select_one(\".txt_inline\").text\n", + " category = tree.select_one(\"._nclicks\\\\:kin\\\\.cat2\").text\n", + " hit = tree.select_one(\".hit\").text.split()[1]\n", " # 데이터를 리스트에 추가\n", " data.append([title, link, date, category, hit])\n", - "\n", "# DataFrame으로 변환\n", "import pandas as pd\n", - "df = " + "df = pd.DataFrame(data, columns=['title', 'link', 'data', 'category', 'hit'])\n", + "df\n", + "\n", + "\n", + "\n" ] }, { @@ -233,19 +1676,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ - "# pandas를 사용해 엑셀로 저장" + "# pandas를 사용해 엑셀로 저장\n", + "df.to_excel('jisigin.xlsx', index=False)" ] } ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "hateslop (Python 3.10.18)", "language": "python", - "name": "python3" + "name": "hateslop" }, "language_info": { "codemirror_mode": { @@ -257,7 +1701,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.4" + "version": "3.10.18" } }, "nbformat": 4, diff --git a/static-crawling/jisigin.xlsx b/static-crawling/jisigin.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bdf22cb63ccdad500f43db4ec2a806466ae2b707 GIT binary patch literal 7090 zcmZ`;1yoe+)*iZJhCy)XMj8gBk&q5S>8_zmN*E=jONJ8ZmTsiGK^o~2P+C$te*9eb ze)sdgcV?Y;)>&(wect`7XYY5Py;T)aP{9BI023ga$)hLJt1K6Pe>Zf05#C?sj%KRP zj!rI|CQeQq9`<(1Bg!}(T)5~ft>r(DTzlaJ5K@JrqN@te+v~M6cuE6Kj z+VZVQ4jD_gkp#(Cl|pKaovYfsLKRF@MGNHEgd1=Mv2Y?q!S}3aci}GviC?6BA8@=j zM{C7sAW{8?3w*j{%G>u_A4CEGfdA=&nWHo8mk+s!c9l*p+#n;^cC*_Al0WkxjEE^Z zIuUjCf#8znShbqzPlHL`+RibLl~tlty$1jZ z)|J>mV|h-~XqEz^os>=Oud0~x2aeFmD=LEUB03gEdUkWF1z2xntr-2JGlIx#$R)tY z9BeO~4o89>edwo|f_^#k8slW*u%}=7dHB^+SFCKlFHd@)x{{eY`YXrgA*~NN1Z_EN zoA;_n+#SIvCkEGrZLGuUm+bbT2Jv6q441yGy0Zp=bHQ4U**mg#(wjnh``bRGBgiEy z)2&<2{z=RS{S-PvbO0cQ2>>9vC&t5$)71)Q5Bt4x|DtA3SI=cm0PMYAHtJz{YLCvIr{M*441I?8c^m=kX5? z)6JlexFZkaS$k7WmK*ttrEHM-V-P64leB2edoe>kS12Y7Hw ze?u5w>{f!EGPCTd{3Cl(z(vo1T52-%7 zu_uJ!EC=&_m$U;CQ$bIqHg9V_HY*iCt@s1Xgvn^{DyG z>0BuyuQ2k(vxzgW<(*`!6zoX7XA`!s7AK-YdrC$<@LCR^1$UN)_7sh}?pQN2-IUtq zY(21&lv&$>gNSRsiBC`iw4L0iK98d$7(Tjmi-XKkG%iZ$A87v&3b4Gp-*!HS(xN6@r=6=l4_ApQd}E?B?hD#{L{AJk?8R z*f!3`x(MmxUSsk|?6u40diuxMX=TY_rzSS6!z(&HlVBzXVIpTCa!biKBd4c`Tn3(z z{R`|J6%k7+&4hA;k&*SZ2xq#+#Zzss(`T{{bkhZGRkYJ_GW62vee4bEK!F;0JRYJa zn5jXDHmc;vIau5YnL+2(J;lHkBCpyO%)aHwkh3DkBvGwQZTY!?b3z%&YKqHumod95 zj9i(qQ;nvD?DyKlNbgCPc?U*LT^WZqp^$c&GBUSdt8o$dE!ss2A2vCHi~`w`tV)I^z`F5( zvWz||siXtQDk*0A@G-=>=7Ha*mjwaFx}csh50&w1;I&RMU#ysM-|i5?ZFmZS4~#M7 zzyI%Wcr>t;GDtunX)o)gHtJ29VW)iirvISDO`Uhp7pNUu)S2ugiNZPoEa`)>` zL^H>0`RTkY+b6>HmSi0Cx~@vO=cai%n9a1Dhx&Te%VHnR2&T8~-dKsH9qwJu(g&0! z>9Es1h*tEglAy1<4j(vR>B8DH*JHpMRG)zHhk?>0$sD#`{8Wga{#I7cTqmNpzEzg# zD#kW)A!4*qJ%j_5s&!V}{uI|z!ziF|Qt{bIg>n#A*is~h;?t`P3cjmT1NU{hT&@@I zrRpG(EhzR4sS82^X^Dt>?1|^mj-3}<-5!ut!CBOLuS6~TjhV5rtBrQG^6Y()1d85} zqb!;qnL&vool?P`uZ{>$aL}K=nqJE)>VJRM57ZS4aN08JwWz1&m;Fuyu@if!mWQq zJX|6s=p)VcHb}*AoB;$5E5}8nA#q;Y-;cF<6)}Cu=4T(E&SUmpHKWdO zTsp^y6F9%BKGXWV^@Evy`7~a%o-5?(=WGu zcS)YQQG0Z%5^Khk4ycCnSmkRNZY7<~?A)1J?Gnu*=reWwGh0&YB7GT%z@qF1|HrG8 zyXqb-=qyt`!(e4@*^7Qx2ikJ;`N3MrOntk41! z`=q%sG|~w_RauhcFc^D4PAQp(JsrCuE#zq}ZDEgSnKNR+?cH#K{ttFl}Uncjw6jm~8DGOW{kE zzZC`6zGp;HdQx?1xpO3CT^bHm6BZIo8!A@NIkjf$HQSZ8JRSb{(I-u= zN_%Kt=W-r3btJ8t$bB3_Fgpo!rvW$eHnKm?-cNTb&g<5ExlPk+BV$J#J~w5`c!k&N ztZ7#tSN=Lul2=G21kCgl+xXcOhuooP0dfEBW6v7)uM?f_ez)f%+)Hy-Bs#U(eiD=PJp~h?xE|)eCxuVIE40Ol^W8H-i)X!SkB?-LoW+_dInC6}@v} z?}l`O;@%?dQ1YomAfuX}`f>VUzJ$y9$GkxVrAnOr$Jcr8?RuFGkXLG>BM!^{@?ScDXHC801|g;awa%)akxOdRNuai5dwfQkvsa zN-7?WFXeAmVlOTX+9m_9n~|u~GZ*QrM(e!ZBTVPB66sk096Cvynjmp3w&%X?sJUgI zeX>pXT8&o2uyi>Hy#b5n20~+?89i4^^f0J2x#dEf(vSfZ=5*l;gjXys*{{G;i%C56 zsfFoROa=6Dt)`4@_s0DuyXg$<6>1c&sK`WEM!9Z}^U8$8(H9Zs%SzODDcyK4KZskD zz|#Uzv3uFfnRMrrf zNq}<6ecaz%J4k}ubqwENZ{4ib7XA!g<^ zekOfEAkAw>!RX*PHGvRS!o!Dt?GLrd#1pbmB`fD24WvD{Y91{lIXo7bw>Kn@?xd2d z32iN!u;JLejad?0C|xlPsciw?j(_1#|psbjUe)zd2!EE6>f-pblNkCG3GD2v=0rfoS$ZipoUe-H_ zDUT0yvTq7M2STwQW>evJk8xT&jW)@@?ZzEd{#XathI7e%;kga{HUZCUo{w$=4EfVx z4!+i!6;I2F)Vv|QyP}vaTzMB*e$tI172A3_aq~pU+A2)Z9t^?QF2F=&oq?d6rFpm& zxp*MKj5z;Ys|_WR=Be4>(;t*1V1Z1`I96NgayL$@)uGDC&Z1_$o-an)G|yQ0uv+I$ zaJbcdA`ExW*AL@M$Mgc8j2}_1>nOmG<8-%XeQ|WRF9=*mfp3+?)cZ=^E^!Jp z5=Uoj)_XZ{037O8sAFc}Z*%Q9oJ^cT{u@Ob>lrG8aI7-EP32Qzj(jyMa!FNmc7?r_We8w;r)yZU_gd`x71;d2UmC6Wv5*8BRPX+-7HEZY%zgN%xOiUg37OV+&G(A zRffm~Xg!0+a4gCZLZAzbusa#oxjvImpW$i8Jghx4Z&@FU+cn49Dx{YqBU~$qI1Y9j zPdKWc6Tn;w%JL9;KjuX})z6Y(R8j>Iv~s42lw2fCPv+)hD8^Oe@aGVE{XjLu7XdkU z#Z7yT+8+-Eb2_7!FeQR&Jmtbjb^}&AFXpSE*Q1wClKbhAJl78(a<`ne=&I!_0P#lRUvXQRo=Lk29PyQ<6u#8xFCwXEas ztrg({vW2j6RqP!HX)puc;LKJ^ZoJ7vzKwF zEpimK2=_hysaNTEe4)$vPGlO)>caebTDS+ga`PDL5)SQn><|4cy z?!t&uR#nTF%y~Sn5I<*=yBOS(WbDsil+Rsc-r55FL=>}&zj#`a5pYPJUN3AeT9>{4 zj$(sDkhvh3WiMst32e4}r_Qt!W5NYb&bHVTKfyg6ulZZ?!{{9IPfd-iJlz2*{I;Tn zufGMETgvPeo^U8v4mI$>pR-S7_%$6V_XYu8u=2Yk8S()f^k_-Q%O>`4%NsuA|wldc81njh1ROhUgM-Jh zD6~?oAf-mNfL&qD&S&lMC^KIU5+cV%Q`=cm*Y}%%*(@WCl;sazPSg8zs_BC#tkEqc z`LElO?e*up_PS9~oyf|#`uIniTQNh-(V~3`>Aesp(Zy|aUN`SNOE#O3Y{yN^eMb(pj=>cSw%Xux8r&ElZSYCp((R`sC<+(!u}>mi zU3K%DG?#qiN3X~vhahk-`OfyUG$Lu!~Ly2d=`Wg+I z&;zSyVmF0)BZ8Sn24n6w)Y0bx>Oc`jL6{g*)5mRmm4+XS4XW(d+g-kGzQFsZqHAS$ z!rJbY{NP^I_o4zZhHIS)ydaA$KFeQXQI7{l(B=XpWLxXjE=y*YkU3;%A zABDsMui^_xcWGmiSGzr|aLGURjV`zPY+OGA+8gt!cLN1 zr8Rss7=>DR{z5&wQd;0*IdH~8_M}eg?U7F5$>R*3aD4W(Ob(4qp5^f^1nJ27(`4mt zbEN{tPGcN4?HdID*!RYzi=2?9=I+nANyJDq)UV~qLd)Lv(*=CX+zI?KhIycXBf|BQ zqQR>pfb>E-$~COQLPd{RBa4wBvvjBZ9qOpGP?{O(LBp*~R0;&*s`>;Y`rX^;LTsi; z21MR8f9(893;%ZxE6yLGt~X|OP1{E}|0EZ>v(`{@PwLe@!I0nN{ua`IQv8>wY7nCM zZ@F*-%Rt`%r1_JX$ax&a#3Uj97eK$K6-6C;WbFVsiUuy7k%ZPWb4yO%u-C$B)54%* zE5-p>?=B@EN0^*gdg?2fG4f~jDzz7m%9cb8rZxF;JJrL=z9=O%cKkbYh$87lU6aDv2HWrJ^3A z+-)}-sDP9B4o3v*ZW~TOmqGUTbW=xH$9MCU3KHc7cjZipdW3>zr zX@9Qz$X#KnQ6Dh|VF+DYUHM6%a45}O@7&kk^HkqSGA*br?*?{Y258li;jZ##Iz{=@C_f27!9qT6MJ&ZQFUK(;Rj;@zmpR~sY z&eov%Y^2(46@~XnM)&Cpt_PU!%`ycny~MlJ6nJ({m*akb+Fkyc>iAVU(~Ta)lOXeE z|MgT^ZfwspypXS=Wl!!KC`ia)l>a?nxmV3!AK!b1|Npe*PxPOojo(-Rz!$0WKhggh zbo>eba{%x+eBu7_|79HTr-45kK>s%2M}hg5f&bbL`qRpv<;1_OAQ6N9vhsIv@h9}p zy!|(H1.2 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from beautifulsoup4->bs4) (2.8)\n", + "Requirement already satisfied: typing-extensions>=4.0.0 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from beautifulsoup4->bs4) (4.14.1)\n", + "Requirement already satisfied: requests in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (2.32.5)\n", + "Requirement already satisfied: charset_normalizer<4,>=2 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from requests) (3.4.3)\n", + "Requirement already satisfied: idna<4,>=2.5 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from requests) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from requests) (2.5.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from requests) (2025.8.3)\n", + "Requirement already satisfied: pandas in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (2.3.2)\n", + "Requirement already satisfied: numpy>=1.22.4 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2.2.6)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2025.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from pandas) (2025.2)\n", + "Requirement already satisfied: six>=1.5 in /opt/miniconda3/envs/hateslop/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n" + ] + } + ], "source": [ "!pip install bs4\n", "!pip install requests\n", "!pip install pandas" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "3d4697a7", - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "id": "08e89dd0", @@ -56,10 +70,3817 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "id": "65a0864e", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "\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", + "
국내도서
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
통합검색
국내도서
전자책
만권당
외국도서
알라딘굿즈
온라인중고
중고매장
음반
블루레이
커피
\"line\"
서재검색
서재태그
마이리뷰
마이리스트
마이페이퍼
서재
\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", + "알라딘 us\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", + "\n", + "
\n", + "
\n", + "
2025년
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
9월
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
3주
\n", + "
\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "단축URL\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
이 페이지의 단축 URL은 아래와 같습니다.
http://aladin.kr/b/1F8w5  복사하기
\n", + "\"http://aladin.kr/b/1F8w5\"\n", + "닫기
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + " 최근 1주 동안 가장 많은 고객들이 구매한 국내도서 순위입니다. \n", + " \n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
1.
\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", + "
2.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합1위2주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 11,700\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
3.
\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", + "
4.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top103주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 12,600\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
5.
\n", + "
\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 11,340\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
6.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합1위8주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 12,960\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
7.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top104주\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", + "
8.
\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", + "
9.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top10016주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 5,400\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
10.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1003주\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", + "
11.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top107주\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", + "
12.
\n", + "
\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 9월 25일 출고 
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
13.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1008주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 5,400\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
14.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top106주\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", + "
15.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top105주\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", + "
16.
\n", + "
\n", + "\n", + "\n", + "
\n", + "경제경영1위2주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 9월 24일 출고 
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
17.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1012주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 10,620\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
18.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1002주\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", + "
19.
\n", + "
\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 10월 15일 출고 
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
20.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top102주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 11,970\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
21.
\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", + "
22.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top10014주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 5,400\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
23.
\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", + "
24.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1002주\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", + "
25.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top104주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 15,120\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
26.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top102주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 14,400\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
27.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top10026주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 11,210\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
28.
\n", + "
\n", + "\n", + "\n", + "
\n", + "자기계발Top1003주\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", + "
29.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1021주\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", + "
30.
\n", + "
\n", + "\n", + "\n", + "
\n", + "경제경영Top102주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 13,230\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
31.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1012주\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", + "
32.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1005주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 7,560\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
33.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top102주\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", + "
34.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top103주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 15,300\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
35.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top10020주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 5,400\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
36.
\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", + "
37.
\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", + "
38.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1002주\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", + "
39.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1003주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 15,120\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
40.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1003주\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", + "
41.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1002주\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", + "
42.
\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", + "
43.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합1위16주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 10,800\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
44.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1008주\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", + "
45.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1004주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 14,400\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
46.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1006주\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", + "
47.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top103주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 5,400\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
48.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top10051주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 8,820\n", + "보러 가기
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
49.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top1003주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 11월 21일 출고 
  • 구성 : NFC 키링 + 단체 일러스트 보드 3종 + <워터밤> 패브릭 포스터 + 오르빗 임시 매니저 출입증
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
50.
\n", + "
\n", + "\n", + "\n", + "
\n", + "종합Top103주\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
  • 이 책의 전자책 : 13,860\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", + "사업자등록 201-81-23094\n", + "통신판매업신고 2003-서울중구-01520\n", + "이메일 privacy@aladin.co.kr\n", + "호스팅 제공자 알라딘커뮤니케이션\n", + "(본사) 서울시 중구 서소문로 89-31\n", + "
ⓒ Aladin Communication. All Rights Reserved.
\n", + "
\n", + "
\n", + "
\n", + "

고객센터 1544-2514 (발신자 부담)

\n", + "
\n", + "서울시 마포구 백범로 71 숨도빌딩 7층\n", + "Fax 02-6926-2600\n", + "
\n", + "
\n", + "1:1 문의\n", + "FAQ\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from bs4 import BeautifulSoup\n", "import requests\n", @@ -71,9 +3892,9 @@ "\n", "# 알라딘 베스트셀러 페이지 URL\n", "url = \"https://www.aladin.co.kr/shop/common/wbest.aspx?BestType=Bestseller&BranchType=1&CID=0&page=1&cnt=1000&SortOrder=1\"\n", - "response = # 요청 보내기\n", - "html = # 응답 받은 HTML 문서\n", - "soup = # BeautifulSoup으로 파싱\n", + "response = requests.get(url) \n", + "html = response.text # 응답 받은 HTML 문서\n", + "soup = BeautifulSoup(html, 'html.parser')# BeautifulSoup으로 파싱\n", "soup" ] }, @@ -91,12 +3912,124 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "id": "7e4a05e3", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "페이지에서 찾을 수 있는 클래스들:\n", + "클래스: ['roof_bnwrap_new'], 태그: div\n", + "클래스: ['banner_box'], 태그: a\n", + "클래스: ['close'], 태그: div\n", + "클래스: ['aladin_header_wrap', 'new'], 태그: div\n", + "클래스: ['headertop'], 태그: div\n", + "클래스: ['inner'], 태그: div\n", + "클래스: ['gnb'], 태그: ul\n", + "클래스: ['home'], 태그: li\n", + "클래스: ['on'], 태그: a\n", + "클래스: ['header_layer_box'], 태그: div\n", + "\n", + "선택된 tree:
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
1.
\n", + "
\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n" + ] + }, + { + "data": { + "text/plain": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
1.
\n", + "
\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
    \n", + "
  • 지금 택배로 주문하면 내일 수령 
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "tree = \n", + "# 먼저 페이지 구조를 확인해보겠습니다\n", + "print(\"페이지에서 찾을 수 있는 클래스들:\")\n", + "for element in soup.find_all(class_=True)[:10]: # 처음 10개 요소만 확인\n", + " print(f\"클래스: {element.get('class')}, 태그: {element.name}\")\n", + "\n", + "# 다른 선택자들을 시도해보겠습니다\n", + "tree = soup.select_one('.ss_book_box')\n", + "if tree is None:\n", + " tree = soup.select_one('.ss_book_list')\n", + "if tree is None:\n", + " tree = soup.select_one('li')\n", + " \n", + "print(f\"\\n선택된 tree: {tree}\")\n", "tree" ] }, @@ -120,26 +4053,48 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "id": "09170331", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "('흔한남매 20', 'https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371918127')" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# 제목과 링크 추출\n", - "title_tag = \n", + "title_tag = tree.select_one(\".bo3\")\n", "title_tag.text, title_tag.attrs['href']" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "id": "c3cf46f9", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "('15,120원', '10.0')" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# 할인가와 별점 추출\n", - "price_tag =\n", - "review_tag =\n", + "price_tag = tree.select_one('.ss_p2')\n", + "review_tag = tree.select_one('.star_score')\n", "price_tag.text, review_tag.text" ] }, @@ -157,10 +4112,55 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "id": "367a56a1", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "컵라면은 절대로 불어선 안 돼 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370208455 12,150원 10.0\n", + "징계를 마칩니다 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368010492 20,700원 10.0\n", + "싯다르타 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=329596 7,200원 9.1\n", + "포식하는 자본주의 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371200468 22,500원 10.0\n", + "프로젝트 헤일메리 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=270454373 19,800원 9.5\n", + "미술관에 스파이가 있다 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370673358 20,700원 9.5\n", + "료의 생각 없는 생각 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=365667648 18,000원 9.5\n", + "일본어 명카피 필사 노트 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369749028 18,900원 9.9\n", + "공허의 시대 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371182771 16,650원 8.9\n", + "키메라의 땅 2 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369731260 16,020원 10.0\n", + "각성 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368643292 16,020원 9.8\n", + "어쩌다 리더가 된 당신에게 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370364632 11,700원 9.5\n", + "듀얼 브레인 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=358739031 18,900원 7.9\n", + "시든 꽃에 눈물을 3~4 세트 - 전2권 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370920239 28,800원 9.7\n", + "라이프코드 LIFE Code https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371498209 19,800원 10.0\n", + "비트코인 없는 미래는 없다 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371990345 27,900원 10.0\n", + "빨간내복야코 안 읽으면 완전 위험한 과학책 3 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368857771 13,500원 10.0\n", + "폭풍 속으로 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370304048 15,300원 9.9\n", + "머리 좋은 아이는 이렇게 키웁니다 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370622539 17,010원 10.0\n", + "일본어 무작정 따라하기 완전판 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=298773222 23,400원 9.8\n", + "주술회전 30 (더블 특장판) https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369126044 5,400원 10.0\n", + "책 먹는 여우의 가을 이야기 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369881409 12,600원 9.3\n", + "작별하지 않는다 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=278770576 15,120원 9.0\n", + "한국의 미래 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371535660 19,800원 10.0\n", + "긴긴밤 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=263027170 11,250원 9.6\n", + "여자에 관하여 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=367028290 15,120원 9.8\n", + "필로스트라토스의 그림들 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369578311 18,050원 9.0\n", + "2026 써니 행정법총론 핵심집약 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=367329762 28,800원 10.0\n", + "열 살에 시작하는 데일 카네기 인간관계론 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=367701699 11,700원 9.5\n", + "캐릭캐릭 체인지! Jewel Joker 주얼 조커 1 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370794176 5,850원 10.0\n", + "장수경의 삼원소 영문법 - 전3권 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=97085904 30,600원 10.0\n", + "돈의 심리학 (30만 부 기념 스페셜 에디션) https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=328520781 17,820원 8.4\n", + "노인을 위한 나라는 없다 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371997158 15,300원 9.3\n", + "고전이 답했다 마땅히 살아야 할 삶에 대하여 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=345266070 15,120원 9.3\n", + "나는 소망한다 내게 금지된 것을 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=189365205 13,500원 9.5\n", + "단 3개의 미국 ETF로 은퇴하라 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=360948172 17,820원 9.9\n", + "치즈 이야기 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368907829 15,300원 9.7\n", + "흔한남매 이무기 3 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=367091916 14,220원 10.0\n" + ] + } + ], "source": [ "\"\"\"\n", "TODO\n", @@ -170,16 +4170,17 @@ "웹사이트의 정보는 늘 균일하지 않기에 크롤링에서 예외처리는 중요합니다.\n", "\"\"\"\n", "\n", - "trees = \n", + "trees = soup.select(\".ss_book_box\")\n", "for tree in trees:\n", " try:\n", - " title = \n", + " title = tree.select_one(\".bo3\")\n", " title_text = title.text\n", " title_link = title.attrs['href']\n", - " price = \n", - " review = \n", + " price = tree.select_one('.ss_p2').text\n", + " review = tree.select_one('.star_score').text\n", " print(title_text, title_link, price, review)\n", - " except: continue" + " except: continue\n", + "\n" ] }, { @@ -196,7 +4197,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 31, "id": "940ebef0", "metadata": {}, "outputs": [], @@ -206,10 +4207,155 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "id": "47cbd64a", "metadata": {}, - "outputs": [], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
title_texttitle_linkpricereview
0흔한남매 20https://www.aladin.co.kr/shop/wproduct.aspx?It...15,120원10.0
1호의에 대하여https://www.aladin.co.kr/shop/wproduct.aspx?It...16,920원8.6
2지박소년 하나코 군 24 (더블 특장판)https://www.aladin.co.kr/shop/wproduct.aspx?It...5,400원10.0
3렛뎀 이론https://www.aladin.co.kr/shop/wproduct.aspx?It...18,000원9.8
4절창https://www.aladin.co.kr/shop/wproduct.aspx?It...16,200원9.3
...............
120고전이 답했다 마땅히 살아야 할 삶에 대하여https://www.aladin.co.kr/shop/wproduct.aspx?It...15,120원9.3
121나는 소망한다 내게 금지된 것을https://www.aladin.co.kr/shop/wproduct.aspx?It...13,500원9.5
122단 3개의 미국 ETF로 은퇴하라https://www.aladin.co.kr/shop/wproduct.aspx?It...17,820원9.9
123치즈 이야기https://www.aladin.co.kr/shop/wproduct.aspx?It...15,300원9.7
124흔한남매 이무기 3https://www.aladin.co.kr/shop/wproduct.aspx?It...14,220원10.0
\n", + "

125 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " title_text \\\n", + "0 흔한남매 20 \n", + "1 호의에 대하여 \n", + "2 지박소년 하나코 군 24 (더블 특장판) \n", + "3 렛뎀 이론 \n", + "4 절창 \n", + ".. ... \n", + "120 고전이 답했다 마땅히 살아야 할 삶에 대하여 \n", + "121 나는 소망한다 내게 금지된 것을 \n", + "122 단 3개의 미국 ETF로 은퇴하라 \n", + "123 치즈 이야기 \n", + "124 흔한남매 이무기 3 \n", + "\n", + " title_link price review \n", + "0 https://www.aladin.co.kr/shop/wproduct.aspx?It... 15,120원 10.0 \n", + "1 https://www.aladin.co.kr/shop/wproduct.aspx?It... 16,920원 8.6 \n", + "2 https://www.aladin.co.kr/shop/wproduct.aspx?It... 5,400원 10.0 \n", + "3 https://www.aladin.co.kr/shop/wproduct.aspx?It... 18,000원 9.8 \n", + "4 https://www.aladin.co.kr/shop/wproduct.aspx?It... 16,200원 9.3 \n", + ".. ... ... ... \n", + "120 https://www.aladin.co.kr/shop/wproduct.aspx?It... 15,120원 9.3 \n", + "121 https://www.aladin.co.kr/shop/wproduct.aspx?It... 13,500원 9.5 \n", + "122 https://www.aladin.co.kr/shop/wproduct.aspx?It... 17,820원 9.9 \n", + "123 https://www.aladin.co.kr/shop/wproduct.aspx?It... 15,300원 9.7 \n", + "124 https://www.aladin.co.kr/shop/wproduct.aspx?It... 14,220원 10.0 \n", + "\n", + "[125 rows x 4 columns]" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "\"\"\"\n", "TODO\n", @@ -221,21 +4367,22 @@ "\n", "datas = []\n", "for page_num in range(1, 4):\n", - " url = \n", - " response = \n", - " html = \n", - " soup = \n", - " trees = \n", + " url = f\"https://www.aladin.co.kr/shop/common/wbest.aspx?BestType=Bestseller&BranchType=1&CID=0&page={page_num}\"\n", + " response = requests.get(url)\n", + " html = response.text\n", + " soup = BeautifulSoup(html, 'html.parser')\n", + " trees = soup.select(\".ss_book_box\")\n", " for tree in trees:\n", " try:\n", - " title =\n", + " title = tree.select_one(\".bo3\")\n", " title_text = title.text\n", " title_link = title.attrs['href']\n", - " price = \n", - " review = \n", + " price = tree.select_one('.ss_p2').text\n", + " review = tree.select_one('.star_score').text\n", + " datas.append([title_text, title_link, price, review])\n", " except: continue\n", "\n", - "df = \n", + "df = pd.DataFrame(datas, columns=['title_text', 'title_link', 'price', 'review'])\n", "df" ] }, @@ -252,21 +4399,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "id": "27e42471", "metadata": {}, "outputs": [], "source": [ "# csv 파일로 저장해 봅시다.\n", - "df.to_csv()" + "df.to_csv('aladin_bestseller.csv', index=False)" ] } ], "metadata": { "kernelspec": { - "display_name": "base", + "display_name": "hateslop (Python 3.10.18)", "language": "python", - "name": "python3" + "name": "hateslop" }, "language_info": { "codemirror_mode": { @@ -278,7 +4425,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.5" + "version": "3.10.18" } }, "nbformat": 4, From f1806d8ca307a689e389a8845ff8ce500bde0f76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=9C=A0=EC=98=81?= <85043991+uuyeong@users.noreply.github.com> Date: Sat, 20 Sep 2025 19:16:44 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[feat]=202=EC=A3=BC=EC=B0=A8=20=EA=B3=BC?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dynamic-crawling/yanolja.ipynb | 790 ++++++++++++++++++++++++-- uuyeong/static-crawling_assignment.py | 181 ++++++ uuyeong/yanolja.py | 194 +++++++ 3 files changed, 1129 insertions(+), 36 deletions(-) create mode 100644 uuyeong/static-crawling_assignment.py create mode 100644 uuyeong/yanolja.py diff --git a/dynamic-crawling/yanolja.ipynb b/dynamic-crawling/yanolja.ipynb index ad6d744..abeed92 100644 --- a/dynamic-crawling/yanolja.ipynb +++ b/dynamic-crawling/yanolja.ipynb @@ -67,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -80,7 +80,7 @@ "# Yanolja 리뷰 페이지로 이동\n", "url = 'https://www.yanolja.com/reviews/domestic/10041505'\n", "######## your code here ########\n", - "\n", + "driver.get(url)\n", "# 페이지 로딩을 위해 대기\n", "time.sleep(3)\n", "\n", @@ -88,6 +88,7 @@ "scroll_count = 10 # 스크롤 횟수 설정\n", "for _ in range(scroll_count):\n", " ######## your code here ########\n", + " driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n", " time.sleep(1) # 스크롤 이후 대기" ] }, @@ -101,21 +102,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 10, "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'driver' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[5], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mbs4\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BeautifulSoup\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# 웹페이지 소스 가져오기\u001b[39;00m\n\u001b[0;32m----> 4\u001b[0m page_source \u001b[38;5;241m=\u001b[39m \u001b[43mdriver\u001b[49m\u001b[38;5;241m.\u001b[39mpage_source\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# BeautifulSoup를 사용하여 HTML 파싱\u001b[39;00m\n\u001b[1;32m 7\u001b[0m soup \u001b[38;5;241m=\u001b[39m BeautifulSoup(page_source, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhtml.parser\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "\u001b[0;31mNameError\u001b[0m: name 'driver' is not defined" - ] - } - ], + "outputs": [], "source": [ "from bs4 import BeautifulSoup\n", "\n", @@ -136,13 +125,246 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['친구들 3명에서 급하게 예약을 했던 숙손데 와.. 우선 프론트 직원님들.. 진짜 너무 친절해서 기분이 좋았습니다. 2박3일 일정이였는데 기분좋게 하루를 시작했고 숙소 위치도 그냥 완전 좋아요..!!!!! 애월은 마스터했습니다. ㅋㅋㅋㅋ 위치 금액 시설이용 서비스 위생 뭐 하나 빠지는거없이 (친구들도인정) 너무 편하게 잘 쉬다가 갑니다 ㅎㅎㅎ 후기 잘 안쓰는데 여기는 꼭 쓰고싶어서 이렇게 남깁니다!오늘도 좋은 하루 되세용:)🍀',\n", + " '작년에 친구들이랑 방문 했다가 좋아서 다른 친구 데리고 다시 방문 했는데 머리 묶으신 여자 직원분 여전히 진짜 너무 친절하시고 좋아요주차 공간이 많지 않은 거 같길래 밤에 차 빼면 차 댈 데 없으려나 하고 걱정했는데 11시에도 지하 주차장 자리 많았어요 보니까 지상에도 자리가 있더라구요지하 1층에는 코인 세탁 건조기도 있고 편의점 가깝고 바다 가깝고 외부에 모래 씻어내는 용도로 있는 샤워기에도 필터까지 끼워져 있는 거 보고 세심한 거까지 신경쓰신다 느꼈어요 ㄴ담에 제주 가면 또 가려구요',\n", + " '오전 일찍 도착해서 짐을 맡겼는데, 여자사장님께서 정말 밝고 유쾌하게 응대해 주셔서 아침부터 기분이 좋아졌습니다😆 긍정에너지 뿜뿜하셔서 사람 기분좋게 해주시더라고요 ㅎㅎ 그래서 피곤한 아침에 저희 가족이 기운이 많이 났습니다! 오전 일찍은 주변에 카페가 대부분이 열지 않았는데 여기서 카페음료도 즐기고 바닷가 뷰도 좋아서 정말 상쾌하게 아침 제주여행을 시작하게 되었네요. 3박 묵었는데 뭐든 먼저 신경 써주시고 침구도 편안하여 푹 쉬다 갑니다. 덕분에 성공적인 여행 감사드립니다. 너무 만족했던 탓에 후기를 처음으로 끄적여 봅니다ㅎㅎ',\n", + " '저는 어딜가든 진짜 리뷰 안쓰는데..처음간 여행에 너무좋은기억이라서 글몇자 올려봅니다. 미리예약하고 가서 걱정없이 갔는데 너무감사하게 호텔사장님께서 친히전화주셔서. 오션뷰 테라스있는곳으로 업그레이드 해주셔서 너무 편히 쉬게되었어요 여행은 잠을잘자야 편하다고 하든데. 따뜻하게 자고 왔어요 시설도 깨끗하고., 2박했는데 청소도해주시고. 지하에 세탁기.건조기도 있어서. 옷을 많이 안챙겨가도 좋을거같아요 로비에 카페가 있어서 커피도 먹을수있고. 암튼 너무~너무 좋았어요 바닷가앞이라 나가서 산책을해도 좋고 주위에 밥집들이 유명한곳이 다 근처에 있어서 더더욱 좋았어요 .강추합니다👍👍👍👍👍',\n", + " '제주도 당일예약해서 하루묵게 되엇어요~편의점도 바로앞에잇고 간단히맥주한캔 마시고 잘 쉬다갑니다~ 앞에 뷰가 참이뻣는데 날씨가 흐리고 바람많이 불어서 사진을 못찍엇어요ㅜㅜ화장실휴지도 접어놓으신센스 ㅋ 깔끔햇어요직원분도 친절하셧어요 춥지않게 푹 잣네요다음에 또신랑이 오자구햇어요^^',\n", + " '오션뷰 참 좋았어요~설 연휴 길어 잠깐 다녀왔는데 눈 비 바람에 엄청난 파도...뷰 좋은 테라스 이용 못 해 아쉬움은남아머요깨끗하고 따뜻하고 둘이 휴식하기 좋은숙소 다음에 또 이용 할꺼예요^^',\n", + " '숙소 경치 너무 너무 이뻐요 사진이랑 똑같아요 사장님분들도 전부 친절 하시고 주차공간도 넉넉하게 지상 지하 둘다 있어서 너무 좋네요 물도 잘나오고 방도 깔끔해서 만족 했습니다 근처에도 먹거리 많고 마트랑 편의점 다이소등 다 가까워서 편해요 다음에도 재방문 할거 같아요',\n", + " '2박3일편하게 쉬다왔습니다오션뷰라 바다멍 노을멍 계속하게 되더라구요곽지해수욕장이 바로 앞이여서 물놀이하기도 좋았구요여사장님이 너무친절하셔서 담에 또 갈꺼같아요ㅎㅎ다만 아쉬운점은 에어컨 리모콘이 없어서 너무 불편했어요ㅜㅜ',\n", + " '부대시설이 좋았어요~치약이랑 칫솔 .로션까지 구비되어 있어 넘좋았어요 아이들과 부모님 이 같이 가니 침대 배치도 넓게 쓸수있게 해주셔서 좋았고 ~객실서 음식도 먹을수 있다고하셔서 좋았어요~바로앞 바닷가라 산책하기도 좋아요.편의점도 바로앞에 있어요',\n", + " '부대시설이 좋았어요~치약이랑 칫솔 .로션까지 구비되어 있어 넘좋았어요 아이들과 부모님 이 같이 가니 침대 배치도 넓게 쓸수있게 해주셔서 좋았고 ~객실서 음식도 먹을수 있다고하셔서 좋았어요~바로앞 바닷가라 산책하기도 좋아요.편의점도 바로앞에 있어요',\n", + " '위치도 좋고 경치는 더 좋은데 도보로 식당 찾기는 좀 애매하더라구요 객실도 욕실도 깨끗하고 다 좋은데 침대 매트리스가 좀 많이 흔들리고 다음 날 허리가 좀 아프더라구요 뭔가 조금 아쉬웠어요',\n", + " '안녕하십니까, 고객님. 마레보비치호텔입니다.우선 호텔방문과 함꼐 값진 후기 말씀에 진심으로 감사드립니다.고객님의 소중한 의견에 보답하고자 2024년 10월 8일 전 객실을 [숙면의 과학 에이스침대]로 전면교체 하였습니다.앞으로도 저희 마레보비치호텔에서 휴식을 보다 더 휴식답게 누리실 수 있도록 노력하겠습니다.',\n", + " '애월 근처 숙소를 알아보다가 괜찮아보여서 예약했는데너무 마음에 들었어요 !!!무엇보다 사장님이 너무너무너무 친절하셔서입실할 때에도 퇴실할 때도 기분좋게 웃었습니다 ㅎㅎ방도 전체적으로 깔끔하니 좋았어요 !! :)다음에는 꼭 오션뷰로 다시 방문할게요 😻',\n", + " '부모님 숙소잡아드렸는데 전망이 너무좋고해수욕장도 가깝고 방도 따뜻해서 좋으셨다고해요그리고 직원분들 너무 친절하다고 칭찬하셨습니다그리고 대부분 연박청소 안해주시던데청소도 해주셨데요 매우 흡족해하셨어요다음에 또 이용하여 싶으시대요 👍 👍 👍',\n", + " '부모님 숙소잡아드렸는데 전망이 너무좋고해수욕장도 가깝고 방도 따뜻해서 좋으셨다고해요그리고 직원분들 너무 친절하다고 칭찬하셨습니다그리고 대부분 연박청소 안해주시던데청소도 해주셨데요 매우 흡족해하셨어요다음에 또 이용하여 싶으시대요 👍 👍 👍',\n", + " '곽지해수욕장 바로앞에 있어서 바다뷰도 멋지고,에이스침대로 교체했다는데, 침구류까지 깨끗하게 컨디션 좋았습니다,조식커피 크루와상 신청했는데, 룸서비스도 되서 편했습니다데스크에 계신 분들도 다들 친절했습니다',\n", + " '직원분들이 매우 친절하셨습니다. 제주에서 여러군데 갔던 곳들 중에 제일 직원분들이 친절하셨습니다. 다음에 이쪽을 방문하게 된다 면 재방문 할 의사가 있어요.',\n", + " '애월 근처에 있어서해안도로 산책하기 좋았어요일 층으로 배정 받아서 오션뷰는 허사가 됐네요그래도 아침에 테라스에 앉아 커피 한 잔 하긴 좋았어요',\n", + " '곡지 해수욕장이 바로 앞에 있고 바다뷰라 아주 좋아요 편의점도 가깝고 주변 맛집도 많고 만족합니다. 4인가족으로 가니 객실이 좀 좁아서 아쉽긴했지만 만족스런 하루 였습니다 ^^',\n", + " '친구들이랑 애월 근처로 알아보다가 마레보에서 숙박하게 되었어요 :) 업그레이드 해주셔서 좋았구요 전체적으로 깔끔해서 좋았습니다 침대는 원래 떨어져있는건데 저희가 붙인거에요다 좋았지만 한가지 아쉬웠던건 넷플릭스가 안돼요! 그거 빼고는 다 좋았습니다!!♥️',\n", + " '아침에 일어나자마자 바다풍경 너무 예쁘네요 다 새거는 아닌데 청소상태 너무 좋아요!! 바닷가 바로 앞이라 아이가 아침에 모래놀이 하고 씻고 체크아웃하니 제일 좋았다 하네요 추천요!!',\n", + " '두번째 갑니다 이만한 가성비 호텔 없어요 시설도 괜찮고 바로앞 곽지해수욕장에서 놀기 딱 좋아요 아이가 넘 좋아해서 매년 가려구요~~',\n", + " '가성비 최고 숙소였어요!!!먼저 직원분들 너무나 친절하시고 웰컴 커피 맛있어서 물어보니 커피콩이 비싼거더라고요여기 커피맛집인듯!퇴실할때 먹은 라떼랑 직접 담그신 청귤청으로 만든 에이드도 진짜 맛있었어요4인가족 패밀리 스위트에 머물렀는데 레지던스호텔처럼 인덕션, 가스렌지, 싱크대 갖추어져 있었어요 냉장고도 나름 컸구요거실에 스타일러 있어서 외출 후 옷관리 했구요방에 트원 침대 2대 있어 4인가족이 넓게 이용하기 좋았어요 침대 편하고 침구류 포근하고 편해서 꿈잘잤어요 온돌로 바닥도 따뜻하고 공기도 따뜻해서 편히 잘 쉬었어요물론 청소상태도 좋았구요 주변에 카페,식당 가깝고 곽지 해수욕장 바로 앞이라 위치도 좋았어요 여름에 가면 물놀이 하기에도 좋겠더라고요2박 모두 머물렀는데 돌아올 때 더 있고 싶어서 많이 아쉬웠어요다음에도 또 방문 예정이랍니다',\n", + " '와 정말 추천해요. 3박4일 제주 첫날 숙소였는데 침대가 일단 무지 푹신하고 편하고 깨끗해요. 걸어서 1분거리 해수욕장이라 그냥 수영복입고 바로 바다안에 들어가서 나와서 숙소에서 씻기도 편햇습니다. 뱅기타고 첫날 열심히 놀아서 피곤햇는데 담날 푹자고일어나서 컨디션좋았어요. 글고 카운터분들이 무지 친절해서 또한번놀랏어요. 사장님들인지 모르겠지만 서계신분들마다 친절하시고 커앤크도 맛있게 먹엇습니다. 24시 언제든 시킬수있다는 편리함.. 주차장도 지상.지하 넓어서 여유있어서 좋구요. 진짜 너무강추합니다. 시설.깨끗.친절. 너무너무 강추합니다.',\n", + " '완전 굿굿 꼭 오션뷰로 하세요 ! !!!!!곽지해수욕장 바로 앞이에요!뷰 짱 좋고 너무 맘에 드는 숙소였어요 ! 침구도 깨끗하니 보송보송하고 사각사각 바스락 소리나는 딱 호텔 침구라 저는 좋았는데 귀 예민한 부모님은 시끄러워서 잠을 못 주무셨다네요ㅠㅠ ..ㅎㅎ 예민한분들 참고하세요그리고 주변 식당들이 일찍 문을 닫아서10분정도 걸어가서 포차에서 맥주 한잔과 식사했네요! 저는 완전 만족하고가요 !!!',\n", + " '방사진은 미처 못찍고.테라스뷰 좋아요.해수욕장이 가까워서 선택했는데 너무 좋네요.직원분들 너무너무 친절하셔서 반했어요.바닥이 카페트인걸 좋아하지 않아서 좀 불편했어요.이건 제대로 확인안한 제불찰이구요.욕조는 없지만 화장실이 커서 씻고할때 편했어요.그치만 칸막이 밑으로 물이 튀어서 세면대밑쪽이 물바다가 됐는데 경사가 없었나봐요.아침까지 물이 흥건하더라구요.어매니티도 충분하고 만족해요.싫어하는 카펫바닥임에도 재방문의사 있어요.',\n", + " '간만에 다시 들른 마레보비치호텔. 체크인/입실을 밤10시에 하는바람에 1층에 배정되어서 살짝 아쉽긴 했지만. 그래도 오션뷰는 좋아요~ 공영주차장 일부 공사중인 거 빼면 뷰는 이쁩니당ㅎㅎ 객실도 대체적으로 깔끔한 편이고 직원분도 친절하고 좋습니다. 다음에 제주 오게되면 또 들릴께요~!',\n", + " '호텔에서 도보 2분 거리에 바다가 있어요! 바깥에 바로 편의점이 있고 주차가 지상과 지하가 다 있어서 불편함이 없었어요! 오션뷰 객실로 업그레이드도 해주시고 프론트에 계시던 중년 남성 두분, 오전에 계시던 여성분 모두 다 정말 친절하셨습니다 너무 깍듯하셔서 같이 90도 인사 하구 나왔네요 😂😂 객실 내부는 약간 호+모텔 느낌이지만 1박 투숙하기엔 편했습니다!',\n", + " '곽지 해수욕장에서 해수욕하고 놀기 넘 좋아요~ 뷰도 끝내주고 숙소 올라오는 계단 위에 샤워기로 모래도 씻을 수 있고 방도 작지 않고 침구도 깨끗하구요!! 침대 두개 붙여서 아이가 떼굴떼굴 굴러다니며 잤네요^^ 그리고 물놀이용품 없어도 구명조끼, 튜브, 돗자리, 모래놀이 등 다 빌려사용할 수 있어서 넘 좋았어요~~담에 꼭 또 가려구요^^ 잘 지내다 갑니다^^',\n", + " '7년전에 왔을때랑 별반 다르지 않아서 깜짝 놀랐어요!바닷가 앞이라 숙박객들도 대부분 바다에서 놀다가 오실분들이 많으실것같은데 복도며 객실이며 깔끔해서 좋았어요.아기랑 간다고 말씀드렸더니 침대도 붙여주시고덕분에 아기 떨어질 걱정없이 셋이서 편하게 잤어요ㅎㅎ바다에서 재밌게 놀고 숙소가 가까우니 너무 좋아요!7년전 여행때도 좋았는데이번에도 즐겁게 하루 지내다 가요!고맙습니다~',\n", + " '2박 디럭스트윈 예약하고 당일 방문했는데 사장님께서 성인 4명이라고 (아무 조건없이 ㅎ) 스위트룸으로 업그레이드해주셔서 너무 깨끗하고 편하게 지내고 왔습니다.곽지해수욕장 바다도 보이고 호텔에서 밤에 가보니 바로 앞이라서 야경 즐기기에도 넘 좋았습니다.가족 여행 즐거운 추억이 되었네요.감사드립니다. 번창하시길 기원드립니다^^',\n", + " '체크인 전에 짐보관 가능해서 덕분에 편하게 여행했어요! 프론트 직원분들도 친절하시고 꼼꼼하게 안내해주셔서 불편한점 없이 이용했습니다.곽지해수욕장까지 굴러가도 될정도로 코앞이라 바다구경도 실컷하고 오션뷰 묵었는데 애매한 오션뷰 아니고 정말 바다가 바로 보여요!그리고 기분탓인지 모르겠는데 더블침대가 다른 숙소에 비해 조금 더 큰 느낌이였어요 둘이잤는데도 하나도 안좁고 넉넉했습니다.수건도 큰사이즈 / 작은사이즈 각각 인원수대로 비치해주셔서 넉넉히 사용했어요.침대 사이에 콘센트 없는거랄 방에 벽쪽으로 붙어있는 붙박이테이블(?) 외에 따로 뭔가 먹거나 할 수 있는 테이블이 없어서 아쉽긴했는데 그 외에는 컨디션 다 좋아서 만족스러웠습니다! 다음에 또 묵고 싶은 숙소였습니다!! 마레보비치 리조트랑 호텔 두개 있어서 택시타고 갈때 헷갈리지말아야겠더라구용',\n", + " '이런거 잘 안쓰는데 숙소위치가 해변앞이라 걱정햇는데 관리 진짜 잘되있어요 가성비도 좋고 해변도 가까운거도 좋고 동네 자체가 이쁘고 맛집도 많아요 현재 신*월*인데 가격은 반값인데 다음엔 마레보호텔 쭉 있으려고요 추천합니다',\n", + " '호텔 뷰는 말할거 없이 좋고 호텔바닥이 온돌이라 히터기처럼 소음이없고 눈이건조하지않아 아주 좋았어요.하지만 샤워할때 물이 안빠져서 식겁했어요.다좋을순 없지만 운이없다기엔 심각한문제라 다소 아쉬웠네요.그래도 주변식당가도 많고 산책하기에도 아주 좋은 숙소라 생각합니다.가성비 굳~',\n", + " '곽지해수욕장 코 앞에 있어서 놀기 너무좋아요.놀다가 조금 휴식하다가 또 놀고 하면되서 아이랑 놀기가 너무 좋았어요. 숙소도 깔끔하고, 화장실 바닥이 미끄럽지 않고 금방마르는 재질이라 습하지 않고 좋네요. 주차장이 지하인 것도 너무좋아요 비올때나 너무 더울때 주차장이 지하에 있어서 참좋았어요.근처에 애월빵공장이나 버거리도 있어서 너무 좋았습니다',\n", + " '객실에서 바라보는 오션뷰는 진짜 너무 환상적이었어요직원분들도 친절하시고객실은 우선 화장실은 수압이 약한거 말고는 전반적으로 좋았고객실은 커텐이 (밑에) 곰팡이 핀거같이 시컴하고 곳곳에 오래되보이는 오염물질이ㅜㅜ난방은 히터였는데 건조해서 베란다문을 살짝열고 잤어요!!전반적으로 나름 만족한 숙소였습니다.',\n", + " '오션뷰도 좋고 침대 쿠션도 좃고 숙면을 축한 하룻밤이였네요..방크기가 조금작고 디저트가 안보여서 아쉬웠어요..아침에 일어나 모닝커피를 못마셨네요....곽지해수욕장이 바로 코앞이라 바다는 실컷봤습니다, .친구들이 넘넘 잘 잡았데요..다음에 또 찾고 싶네요.ㅎ',\n", + " '좀 연식이있는 복도가 당황스러웠지만내부와 뷰가 대만족이였습니다프론트 직원분들과 객실담당하시는분들도 모두모두 친절하셨어요한가지 아쉬운점은 수건이 좀 많이 낡았어요 수건이 교체되면 어떨까 싶었어요그리고 냉장고문고리가 부러져있던데 교체하시길 ㅋ마지막으로 객실에 커피나티가 없어서 아쉬웠습니다하지만 이가격에 이런뷰는 정말 대박이였고 잘쉬었다갑니다',\n", + " '프론트 여직원분 넘친절하시고 객실 수건.침실정리 등 잘해주셔서 3박동안 기분좋았습니다.튜브바람넣는거.탈수기.세탁실 다 있어서 넘편했어요~곽지로 온다면 무조건 마레보비치에 머물 예정입니다',\n", + " '숙소가 깨끗하고 직원분들도 친절했고 무엇보다 뷰가 너무 좋았어요! 바로 앞 곽지해변도 예쁘고 주변 카페나 술집들도 분위기 있어요. 또 방문하고 싶네요~ 다만 화장실은 문이 샤워부스문 같아서 방음이 안된다는 단점이.. 다른건 다 좋았습니다~',\n", + " '여사장님이 엄청 밝으십니다.진짜 보는사람 기분 좋아지는 느낌을 받았습니다.시설 또한 아주 깨끗하고 뷰가 정말 좋았습니다.앞에 편의점도 가깝고 곽지해수욕장앞이라 뷰도 좋은점 참고하시고 다들 예약가즈아 ㅎㅎ사장님 생각나서 리뷰남기러 들어왔네요ㅎㅎ',\n", + " '일단 너무 넓고 모던한느낌 좋았어요역시 바다뷰...아침에 뛰노는 고양이와 개도 구경 잘 했습니다 ㅎㅎ욕실에도 물때하나없이 깨끗했고 수건양도 넉넉했어요소음도 없었어서 재방문의사 있습니다',\n", + " '해변 바로 앞이라 해수욕을 즐기고 돌아온 손님들에 의해 호텔 로비랑 엘리베이터가 지져분해지기 쉬운데 계속 청소를 하시더라구요. 그 부분 역시 감동.',\n", + " '가성비 좋은 숙소였어요. 사진보다 규모가 작은거 같긴 했지만 관광하고 잠만 잘거라 상관 없었어요.직원분들이 모두 친절하시고 좋았어요.객실에서 바다도 잘 보이고 편의점도 가까이 있어 편했어요.',\n", + " '6명이서 갔는데 방3개라 딱 좋구 너무 좋았어여 뷰가 진짜 좋구요 청결해요 4월말에 일반 객실 와보고 괜찮아서 스위트 객실 예약했는데 스위트는 진짜 좋네여 비싼 값을 하네요 담에 기회되면 또 스위트객실 이용하고 싶어요',\n", + " '엄청 친절합니다.친절한 만큼 숙소도 좋을거다 예상했는데예상대로 몹시 좋습니다. 방문객 마저 기분 좋아지게응대해주시는 곳은 너무 오랜만이라 쌍따봉 드립니다.재방문 의사 있습니다.',\n", + " '직원분들이 엄청 친절하시고호텔 위치, 분위기 다 최고입니다.가족여행으로 갔고 다시 또 애월을 가면 무조건 여기서 묵을 것 같아요',\n", + " '바다도 잘 보이고 좋았습니다.냉장고는 냉동까지 되는것이라 더 좋았습니다. 아쉬운 점은 타월이 한 장은 그래도 하얀 편인데 다른 한 장은 회색이어서 사용할까말까 컴플레인을 해야하나 고민이 될 정도였습니다.',\n", + " '스탭분들 친절하시고 편하게 이용했어요테라스 딸린 방 이용했는데 테라스쪽이 구멍뚫린 바닥이라서 거기서 냄새가 좀 나는거 같더라구요객실에서도 습기 때문인지 좀 쿰쿰한 냄새가 난다고 할까요ㅜㅜ 그것만 제외하면 편하고 아늑하고 제주를 충분히 즐길 수 있었어요!!',\n", + " '매번 제주 여행때마다갔는데, 이번엔 청소도 안된 방을 줘서 불쾌했어요~비슷한 방이 없어 업그레이드 시켜줬지만, 조금 실망이었는데 방을 보고 기분이 풀렸네요~',\n", + " '너무좋았어요 룸컨디션도 깨끗하고 좋았고 감각적인 인테리어와 노을지는 해변뷰도 너무 멋졌습니다 곽지해수욕장이 코앞이고 주변에 맛집도 꽤 잇엇고 도보5분거리에는 무인제주 해변뷰 칵테일바도 있어서 밤에 다녀오기 좋앗어요 :)',\n", + " '테라스도이쁘고 방도깔끔하고너무좋았어요ㅎㅎ 근데 체크인한날은 날씨가정말안좋았는데떠나는날해가쨍쨍이더라구요ㅠㅠㅋㅋㅋ 짐정리하면서더있고싶다는생각뿐일정도로너무만족한곳이었습니다!!',\n", + " '제주 갈때마다 들리는 곳입니다. 이번에 리모델링을 하셔서 로비도 바뀌고 욕실도 바뀌고 더 좋아졌네요. 방에 공기청정기까지~ 직원분들도 넘 친절하셔서 아주 편하고 즐겁게 있다 왔습니다. 담에 제주갈 때 또 이용하겠습니다^^',\n", + " '아침에 일어날 때마다 바다가 바로 보여 기분이 저절로 좋아질 만큼 좋은 기억으로 남은 여행이었습니다.호스트분들 모두가 친절하셔서 다음번에도 제주도를 여행한다면 들리고 싶은 숙소입니다!!',\n", + " '지인이 방문해서 호텔을 예약해줬는데, 이불이 넘넘 푹신해서 좋았다고 하네요~~ 그런데 벌레가 있어서 깜짝 놀랐대욯ㅎ 성수기라 객실 교환도 안되고ㅠㅠㅠ 에프킬라 하나 받았다고 합니다ㅠㅠ 암튼 바로 앞이 곽지해수욕장이라 그게 가장 만족스러웠다고 하네요!!',\n", + " '작은 방이지만 있을거 다있고, 실속있었으며친절도 매우 좋고,주변 식당도 적당히 있고, 배달도 되서 편했습니다.먼지가 좀 있어서 청결도는 조금 아쉬웠습니다!',\n", + " '2박했습니다. 청소도 잘되어있었어요 다만 제가 묵은 곳에서 주차장까지 가기좀 불편했어요.. 그거외엔 다 만족합니다. 특히 직원분들 정말 친절하십니다.',\n", + " '오션뷰 너무 좋았고 바다랑 가까워서 너무 좋았습니다!! 바로 앞에 편의점도 있고 카페들도 있어서 좋았던 것 같아요 ~~ 직원분들 모두 친절하셔서 기분 좋게 다녀왔습니다! 재방문의사 있어요 😄',\n", + " '일단 뷰가 넘 좋아서 만족합니다근처 식당 편의점이 가까이에 있어 편리했어요토끼띠 인증이 있어 커피랑 빵도 서비스 받았구요맛도 좋았답니다뷰는 진짜 좋아용~~^^ ㅎ',\n", + " '혼자서 푹 쉬려고 떠난 힐링 여행이여서 깨끗한게 너무 중요했는데 진짜 너무 깨끗하고 깔끔하고 이 부분은 너무 만족했습니다!! 밤에 택시로 왔어서 어떻게 들어가야하나 했는데 그부분이 조금 어려웠지만 그래도 방이 너무 좋았습니다👍',\n", + " '일단 공항에서 가까워 접근성이 좋고 제가 제일 중요하게 생각하는 침구와 청결상태가 아주 좋습니다. 창문밖으로 보이는 제주바다도 너무 좋아요',\n", + " '숙소 너무 깔끔했구 연박하면 수건이랑 물도 다시 받을 수 있어요!! 직원분들도 친절하세요! 화장대도 있어서 너무 좋았습니당',\n", + " '오션뷰를 너무 기대했는데 정말 좋더라구요 !! 인테리어도 이쁘고 깔끔한데 침구도 편안해서 푹 자고 가요 ㅎㅎ대신 치약칫솔은 제공안하니 가져가야하고, 트리트먼트라고 써있는 통에 로션이 넣어져있습니다 참고하시길',\n", + " '조용하고 곽지해수욕장 안에 있어서 뷰도 좋고요.공항 가까이 있어서 접근성도 좋습니다. 관리가 아주 잘된 느낌이에요~ 바로 앞에 편의점도 있고 완전 만족해요!!!',\n", + " '저녁 아침 직원분들 정말친절하셨어요 웃는얼굴밝은목소리 ㅎ여름에가면 해수욕장바로앞이라 좋을거같아요',\n", + " '곽지해수욕장 바로 앞이라 해수욕가하기 편하고 특히 테라스룸이라 밖에 나와서 경치 감상하기 좋았습니다',\n", + " '아름다운 곽지해수욕장을 전망할 수 있습니다.묵는 사흘 내내 날씨가 좋지 않았지만 방이 따뜻해서 괜찮았습니다. 특히 침대가 탄탄하고 넓어 잠을 잘 잤습니다. 침대는 만점입니다.직원들도 친절합니다.',\n", + " '위치도 너무좋고 프론트직원분들도 엄청 친절하네요 2박했는데 잠깐 비운사이에 청소도 깔끔히 해주시고 침대도 편해서 좋네요3성급이라고 힌지만 다음에도 또 이용하고 싶네요',\n", + " '오션뷰 가운데 나무가 있어서 처음에는 잉?! 싶고 아쉬웠지만 은근 왼쪽 오른쪽 나눠서 보는 맛이 있더라구요ㅋㅋㅋ 객실 굉장히 깨끗했고 직원분들이 친절하게 응대해주셔서 기분이 좋았습니다ㅎㅎ',\n", + " '일부로 잡은 오션뷰인데 비가와서 아쉬웠어요 ㅎㅎ청결은 청소하시는 분께서 깔끔하게 해 주십니당침구 오염 있어서 교체 요청해드렸는데 확인 후 청결하게 바꿔주셨어요! 감사합니다',\n", + " '간만에 편안하고 아름다운 바다를 보면서 휴식을 보낸곳인것 같습니다다음에 꼭 다시 방문해서 즐거운 여행을 또 한번 즐기고 싶습니다',\n", + " '곽지해수욕장 옆에 위치하고 있어 창문 너머 보이는 바다풍경이 일품.깨끗하고 시설이 잘 되어있어 만족한 여행이었습니다.다시 머물고 싶은 호텔',\n", + " '공간은 많이 넓지 않지만 다른 장점이 많은 숙소였어요. 뷰가 좋아 테라스에서 앉아서 바다를 보고 있는 걸로도 충분히 만족할만한 곳이었습니다. 인테리어도 예쁘고 피자 룸서비스도 맛있었어요.',\n", + " '생각지도 못했는데 객실을 업그레이드 해주셔서 바다 보이는 방에서 너무 편하게 잘 쉬고 왔어요ㅎㅎ그리구 바로 앞이 곽지해수욕장이라 산책하기도 좋네요~~🥰',\n", + " '해변이 가깝고 애월 산책로도 좋았습니다침구및 청소 상태도 양호합니다주변 가까이에 먹을거리는 아쉬웠어요',\n", + " '아주 친절하셨고 3연박 했는데 불편함 전혀 없었습니다. 바로 앞 바다도 예쁘고 바로 옆에 편의점도 있어요. 다음에도 또 오고싶네요',\n", + " '직원분들은 친절 하셨구요. 주차도 널널 하게 할수가 있어서요. 객실도 전반적으로 마음에 들었어요 살짝 쫍다고 느껴지긴 하는데 나쁘지는 않았어요 ㅋㅋ 전망은 ㅋ 정말 좋았어요',\n", + " '위치가 곽지해수욕장 바로 앞이라 편했고 낮에는 카카오택시도 잘 잡혀서 좋더라구요 객실 크기는 사진이랑 똑같았어요',\n", + " '아주 편하게 잘 이용하고 갑니다!🧡\\U0001faf6🏻🧡직원분들 쏘 카인드하시고 좋았어요!전신거울이 없고 고데기하면서 거울을 볼 수 없는 콘센트 위치라 조큼 아쉬웠습니다!',\n", + " '스위트객실 이용했는데 가격대비 너무 만족했습니다.객실 컨디션도 완벽했고 특히나 곽지해수욕장이 보이는 뷰가 끝내줬습니다.재방문의사 120% !!!!!!!',\n", + " '다시 방문 의사드는 곳입니다특히 여 직원분 친절함은 굿!!테라스 뷰는 또 좋아요ㅎ테라스 중문이 좀 잘 안열림',\n", + " '바닷가에서 가깝고 숙소는 깨끗하게 관리되고 있었어요곽지해수욕장 또한 스노쿨링하기에 최고의 장소였네요',\n", + " '깔끔하고 너무 예뻐요 옥상 테라스도 ㄹㅈㄷ이고 담을 제주 여행도 함께하고 싶어요 즐거운 추억남기고 갑니다 감사합니다!ㅎㅎ 완전 강추!!',\n", + " '욕실 및 객실 다 깨끗하고 시설이 좋았으며 바다뷰가 너무 좋았고 여름에 다시 올 생각임^^',\n", + " '이번 겨울 가족여행 해비치호텔에서 보냈는데아이들 놀거리도 많고직원들도 친절해서편안히 잘 쉬다갑니다너무 좋아요',\n", + " '안내하시는 직원 분들 너무 친절하고 좋았습니디.방이 좀 좁은거 빼면 만족스러운 여행이었습니다. 뷰도 좋고, 동네도 한적하고 너무 좋았네요',\n", + " '바로 앞이 곽지해수욕장입니다!!침대에 누워서 바다멍때리기 너무 좋아요~침구가 딱딱한거 빼고는 모듀 만족이었습니당',\n", + " '안녕하십니까, 고객님. 마레보비치호텔입니다.우선 호텔방문과 함꼐 값진 후기 말씀에 진심으로 감사드립니다.고객님의 소중한 의견에 보답하고자 2024년 10월 8일 전 객실을 [숙면의 과학 에이스침대]로 전면교체 하였습니다.앞으로도 저희 마레보비치호텔에서 휴식을 보다 더 휴식답게 누리실 수 있도록 노력하겠습니다.',\n", + " '곽지해수욕장을 온다면 무조건 여기에요 작년에 이어 두번째 연박했습니다. 해수욕하고 놀며 쉬기에 최고입니다.',\n", + " '방이 조금 작다는 생각은 들었지만 청결하고 오션뷰에 통창이여서 아주 좋았습니다. 직원분들도 너무 친절하시고 아침 조식도 아주 좋았습니다.',\n", + " '직원분이 너무 친절하구 이가격대에 이퀄리티 오션뷰는 장난아닌 가성비에요. 냉동실이 살짝 아쉬운것 빼고는 다 조았어요!!',\n", + " '전망이 좋아요 바로 앞에 바닷가라 언제든디 갈수 있고 조용해서 다음엔 오래머물면서 힐링할까 합니다',\n", + " '곽지에서 숙박은 처음인데 나름편의시설도 있고 식당도있고 괜찮더라구요~~!!바다까지 접근성이 좋아 여름철 숙소로 추천해요~~!!',\n", + " '버스 접근성도 좋고 택시도 잘 잡히는 위치입니다. 바다가 보이는 좋은 조망과 깔끔한 어메니티영어도 가능해서 호텔로서 딱 이었어요',\n", + " '제주도 여행중 최고의 호텔 이였습니다직원분들 매우 친절 하고 룸컨디션도 매우 좋았습니다강추드립니다',\n", + " '직원도 친절하시고 냄새도 안나고 청결하고모든 면이 마음에 들어요나중에 또 애용하고싶어요~~~~',\n", + " '숙소 컨디션도 좋고 깔끔했어요. 뷰도 좋았고 담에 오면 또 묵고싶은 생각이 있네요. 애월쪽으로 오시면 추천드립니다.',\n", + " '아주 좋아요바다가 앞에 있어서아침에 걷기가 딱입니다실내도 깨끗하고침구도 편안합니다주변에 맛집도많고 아주 잘 쉬다가 갑니다',\n", + " '친절 하셔서 너무 좋았어요 아쉬운건 너무1층이라 창문을 거의 커튼만 치고 지낸게 아쉬워요 청결도는 너무좋앗고 요청하지않아도 어메니티 채워주셔서 좋았어요!',\n", + " '직원분들도 너무너무 친절하시고 객실도 너무 훌륭했어요 오션뷰도 너무 좋았고 통창으로 탁트인 전망이 너무 좋았네요 다음에도 이용 할 생각있어요~',\n", + " '괜찮은것 같아요 단지 침대 옆에 책장이 많이 거슬리고 구멍이 중간 중간 뚫려있어서 신경쓰이는거 말곤 완벽했어요',\n", + " '사장님들도 친절하시고 룸서비스도 정말 맛있었습니다.덕분에 잘 쉬다 왔습니다. 재방문 의사 200% 입니다.',\n", + " '뷰가 정말 좋았어요~연박했는데 청소도 잘해주시고 친절해요^^ 다만 이튿날 룸의 와이파이가 잘 안잡혀서 옆방걸로 이용했어요^^,,',\n", + " '직원분들 친절하셔서 너무좋아요!!시설도 깔끔하고 조용하니 진짜 잘쉬다갑니다ㅎㅎ다음 제주여행도 다시 방문할게용',\n", + " '나쁘진않아요. 바로앞 바닷가 먹을게 다있어서 편하긴해요. 더러운곳보단 돈좀더주고 오는게낫음',\n", + " '1층인데도 반층이 높아서 좋았어요~사진처럼 바다도 보이고~직원분들 친절하셨어요~',\n", + " '굿ㅎㅎ 전망과 침대.편합니다 화장실도 굿입니다..다만 tv ott가.안나와요 그것만 빼면 완벽합니다.',\n", + " '2박 하고 너무 좋아서 2박 더 했습니다 숙소도 깔끔하고 바로 앞에 곽지해수욕장 오션뷰 잘 보입니다',\n", + " '뷰가 좋아 기분좋아지는곳이예요직원분들 친절하시고바로 옆에 편의점있어 필요한것들 바로 겟',\n", + " '객실이 깔끔하고 오션뷰도 잘 보였어요ㅎㅎ 바다가 워낙 가깝다보니 저녁먹고 바다 보면서 산책하니까 정말 좋았습니다👍🏻',\n", + " '곽지해수욕장에서 아주 가까워서 물놀이 하러가기 딱 좋았습니다! 직원분들도 친절하시고 깔끔한 숙소에 바다뷰도 좋았습니다~~~',\n", + " '제주에서 묵은 첫 호텔.덕분에, 제주에 대한 첫 인상도 애월에 대한 첫 인상도 너무 좋았습니다.',\n", + " '1층에 프론트와카페가같이있어서좋아요!!!뷰도넘좋구 바닐라라떼도맛있었어요ㅇㅅㅇ온돌방식이라 방안에서조절가능한것도 너무좋더라구요',\n", + " '친절한직원과 하루하루 깨끗이 청소해주시고 항상 좋은 미소를 띄이며 인사해주시셔서 너무 좋앗습니당 ㅎㅎ',\n", + " '너무좋았습니다 곽지해변과 가깝고.직원분들 친절하고 청결했으며재방문의사있어요 ♡',\n", + " '곽지해수욕장이 바로 앞이라 물놀이하기에도 좋고 주변에 편의점이랑 치킨집있어서 오가며 들르기 좋아요',\n", + " '뷰가 좋았어요 깨끗하고 잠도 편하게 푹 잤어요^^통유리창이 깨끗했음 하는 아쉬움이있었어요',\n", + " '룸상태 좋고 시스템 좋고 장소 좋고 단골이 되었습니다 룸상태 좋고 시스템 좋고 장소 좋고 단골이 되었습니다 룸상태 좋고 시스템 좋고 장소 좋고 단골이 되었습니다 룸상태 좋고 시스템 좋고 장소 좋고 단골이 되었습니다',\n", + " '뷰가 좋았고근처에 식당도 많아서접근성도 좋았습니다.프론트 직원이 친절해서기분 좋았습니다',\n", + " '인테리어도 너무 좋고 직원분들도 친절하고뷰맛집이네요 무엇보다 해변이 가까워서너무 좋았어요~',\n", + " '좋았어요~~~ 오션뷰인네 2층이라 오션이 잘 보이진 않아요 그건 아쉽습니다 바다냄새도 나고 좋습니당 !!!',\n", + " '티비가 ott가 안된다는점음 쬐금 아쉬웠지만 전체적으로 깔끔하고 만족스러운 숙소였어요!!',\n", + " '전망도 좋고 까끗하고 친절하시고 너무너무 다 만족스러워요!! 다만 넷플릭스가없어서 많이 아쉬웠습니다 ㅠㅠㅠ 침구 푹신하고 꿀잠잘수있어용',\n", + " '화장실. 침대상태. 너무 깨끗하고, 내부 그림. 조명등도 좋았습니다. ~~^^ 위치도 좋고, 인근 고기국수집도 추천해 주셔서 맛있게 잘 먹고 갑니다. 다음에도 제주 가면 꼭 재 예약 . 방문 예정요~~^^',\n", + " '프론데스크 직원분들 모두친절객실 컨디션 생각보다 좀 작은거빼곤 뷰 청소상태 모두 좋았음(전기 아울렛 상태 헐렁하던데 얘기한다는게 깜빡)앞에 과물치킨집있어서 매일 사다먹음 편의점도 바로앞에있어 매우 편리애기있는 사람들은 앞 해수욕장에서 놀기너무 편함다음에 애월가면 무조건 또 감',\n", + " '1층으로 배정받아서 조금 아쉽긴했지만.. 카운터 분들 다 친절하시구 안에도 생각보다 넓고 좋았어요 !! :)',\n", + " '뷰가 너무 좋았어요 근데 예약할때 룸 사진은 카펫이 아닌 그냥 마루바닥 같은거라서 아기랑 같이 묵을꺼라 일부러 방 바닥을 보고 골라서 여기로 예약한건데 막상 입실하고 보니 바닥이 카펫이어서 당황했네요 연박이었는데 중간에 청소해주실때 바닥은 청소를 안해주셨는지 빵가루가 그대로 였어요.. 날씨가 좋았다면 뷰가 너무 좋아서 그래도 괜찮았을텐데 하필 강풍주의보가 떨어져 바닷바람소리가 너무 커서 아이와 잠을 설치긴 했어요 아마 테라스 때문에 창이 1개 뿐이라 방음이 잘 안된거같아요 그런것만 빼면 카운터 직원분들도 친절했고 주차장도 괜찮았고 뷰도 괜찮았고 바로 앞에 편의점도 있고 괜찮았어요',\n", + " '직원분들. 짱친절해요.2박꿀잠잤어요^^외관이 노후되긴했지만곽지해수욕장 코앞이고아침수영도하고 완벽했습니다~~!다음에도 올게용!!!!',\n", + " '곽지해수욕장 바로 앞이여서 뷰도 좋았고 산책길도 잘되있어서 좋았습니다. 침대도 더블로 두베드가 있어서 친구랑 편하게 잤고 매트리스도 너무 딱딱하거나 푹신하지 않아서 허리가 아프지 않았습니다. 방이 조금 좁은 편이긴 하지만 지내기에 불편한 정도는 아니였습니다. 위치도 애월과 가까워서 서쪽으로 여행코스를 계획하신다면 다니기도 좋을 것 같습니다. 주차장도 여유가 있었습니다!',\n", + " '직원분들도 친절하시고 방도 깨끗해서 좋았습니다.전망은 사진에서 보던 것보다 더 좋았고요',\n", + " '곽지해수욕장 에서 가까워 잡았는데 비가 와서 파도도 높고 날이 흐려 못 놀아서 참아쉬운 숙소입니딘',\n", + " '바갓가 앞이라 해수욕하고 오기 너무 좋앗고 숙소도 청결했습니다!직원분들 너무 친절하셧어요!',\n", + " '곽지해수욕장이랑 가까워서 넘 좋았고 숙소 주변에 식당들도 있는데 맛이 괜찮았어요 주차도 편했습니다',\n", + " '뷰 좋음.편의점 가까움.객실 깨끗함.직원분들 잘 웃어주심.수건 4개 있는데 추가시 금액 지불해야됨.수건 돈 받는 곳 첨 봄.그거 말고는 다 좋음.',\n", + " '곽지해수욕장과 가까운 것이 가장 큰 장점입니다. 청결은 좀 더 개선되면 좋겠습니다. 입실 시 락스 냄새가 많이 난 것에 비해 화장실 수전 물 나오는 곳에 물 때가 많아 한 번 닦아내고 사용했습니다. 이불이나 베개 커버도 얼룩이 보여 좀 그랬습니다. 침대가 에이스 침대라고 하나 오래되었는지 푹푹 꺼지는 곳들이 있었고 에어컨 리모컨이 없고 온도 설정하면 바람 세기 조절을 못 해서 너무 찬 바람이 얼굴쪽으로 오고 설정한 온도가 되면 에어컨이 꺼졌다가 다시 켜지는 방식이라 아이랑 자는데 매우 난감했습니다. 28도로 맞추어도 바람 나올 때는 너무 차가워서 이불을 덮었다가 바람 안 나오면 다시 이불 걷었다가 무한 반복으로... 잠을 편히 잘 수가 없었습니다. 아이랑 가기에는 비추입니다. 직원분들은 친절하셨고 2박 동안 객실 정리도 잘 해주셨습니다. 바다에서 놀고 모래 씻어낼 수 있게 건물 밖에 수전이 설치된 점도 편리했습니다. 객실이 카페트가 아닌 마루 바닥인 점은 좋았습니다.',\n", + " '우선 사모님(?)이 웃으며 인사를 해주셔서 너무 기분이 좋았습니다. 객실이나, 상태는 일반적이였구요. 다만 아기 침대가드를 요청했었는데 없다고 하시더라구요, 대신 저렇게 침대를 붙여주셔서 아주 편안하게 아이와 잘 수 있었습니다. 다만, 에어컨을 통한 공기 난방이기 때문에 조금 건조할 수 있어요~',\n", + " '세안용 클렌져가 빠져있어서 아쉬웠네요.요즘은 거의다 그정도의 급에는 넥플릭스도 되고컴퓨터도 있고, 가장 기본으로 핸드폰 등의 충전기가 없어서 빌렸는데 훔쳐갈일도 없고 카드 제출하면서 체킹될껀데 보증금을 1개당 만원씩은 솔직히 불쾌했네요.그리고 숙소안에 음료도나 커피믹스ㆍ차티백도 없고.그냥 생수2개만 있는게 그냥그랬네요.오션뷰를 했는데 오션뷰는 커녕 동네 골목뷰였네요.',\n", + " '사진이 없긴 한데 그냥 호텔 느낌보단 조금 모텔~호텔 같구요 창문 쪽에 창틀? 이런데 먼지가 꽤 있어서 아쉬웠어요 그래도 가성비로 괜찮고 잘 때 방음 잘 되는 게 중요한데 방음은 좀 되는지 조용히 잘 잤어요 화장실 깨끗해서 좋아요 수압도 세고! 호텔 주차장에 전기차 충전하는 자리 없어서 아쉬웠고 호텔 주변에 전기차 충전할 곳이 몇 군데 있는데 거의다 이용하기 힘든 곳이라 좀 아쉬웠어요ㅠㅠ',\n", + " '직원분들 친절합니다. 일회용품은 제공되지않아 따로 챙겨오시거나별도로 구매하셔야 합니다.배터리충전기 구비되어있지 않습니다.(대여가능 보증금 1만원)물 수건 기타등등 기본제공 되는 것에 추가시 요금발생.1층에 정수기 전자렌지 있음. 곽지해수욕장과 가까움.근처 한담올레길? 산책로 있음.',\n", + " '복도에서 홍어 삭힌 냄새가 났고 방 안으로 들어와서 이에 대해 문의함. 페브리즈를 복도에 도배하는 것으로 해결. 신기하게도 머문 층의 복도에서만 그 불쾌한 냄새가 난 걸 확인해서 그렇게 화는 안 났음. 다만 프론트 직원분이 분명 코가 막힌게 아니라면 비록 방을 잠깐 사용했어도 바꿔줄 법 한데, 죄송하지만 곤란하다는 반응이 아니라 진작 말 안한 너희 잘못이고 이러면 청소를 다시 해야하는데 어떡하라는 태도로 불친절하게 답변한 건 서비스 미스임. 오전 타임의 여자 직원분은 반면 매우 친절해 보였음. 뷰는 좋긴 한데 방 위치에 따라 가려지는게 있음. 방에 어매니티는 정말 없다고 봐도 무방함. 굳이 애월에 있어야 하는 게 아니라면 제주 시내 널린 10만원 대 별 달린 호텔을 가는 게 맞음. 싸지도 않고, 모텔 수준임.',\n", + " '기대이상으로 좋았어요뷰도좋구 시설도 깔끔하고 좋았어요다음에 또 이용하고싶어요',\n", + " '곽지해수욕장 바로 앞이라 해수욕하는데 접근성이 좋아 매우 만족스러웠어요!숙소 위치가 해변이 바로 보이는 곳이라 바다가 보여 좋았고, 작은 테라스도 있어서 젖은 옷 말리는데도 용이했어요.침구, 티비 등등 시설이나 청결도는 매우 만족스러워서 하루 편하게 잘 지내다 갑니다!한가지 아쉬운 점은 늦은 퇴실 패키지로 예약했고 체크인때도 확인했는데 침실 청소해주시는 분께 전달이 되지 않았는지 퇴실 시간 전에 마스터키로 문을 열고 들어오셔서 매우 당황스러웠습니다ㅠㅠㅠ다음엔 이런 일이 생기지 않도록 잘 체크해주시면 좋을 것 같아요',\n", + " '아들 면회갔다가 묶었는데 추가비용을 받아서 조금 언짢음..객실이 비좁음.. 침구는 좋고 에이스매트도 좋았음',\n", + " '근처에 해수욕장을 제외하면 밥집이 많지 않아서 그건 고려하고 오셔야 할듯 합니다. 다만 가까이에 애월빵공장이 있어서 거기 방문의사가 있으시다면 1박을 해보는것도 좋을 듯 합니다^^',\n", + " '약간... 처음에 문제가 있었으나해결해주시는 모습이 참 친절했습니다.스위트룸은 정말 30평 아파트 같았어요.이번에 신축아파트 입주하는데 저희 아파트보다 좋더라구요..거실에 소파에 티비도 크고 방마다 티비있고 온도도 방마다 조절되서 따뜻하게 잘 잤습니다.',\n", + " '친절하시고 방 깨끗했어요~ 바닥이 카페트이긴 하지만,,,테라스에서 맥주라도 한잔할라고 일부러 테라스 있는방으로 골랐는데, 어쩐지 테라스 있는 방인데 왜 더 저렴하지 했더니, 1층과 2층이네요. 좀 더 잘 알아봤어야 했는데, 그래도 2층으로 신경써서 주시더라구요~날춥고 바람엄청 불어서 테라스도 못 써봤어요... 생각이 짧았어요....ㅜㅜ 그래도 겨울인데..ㅜㅜ지에스 편의점이 가까워요~애월까페거리에서 10분내외?배민켜보니 애월까페거리쪽에 있는 식당들이 배달범위더라구요~',\n", + " '그래도 장점은 있습니다1.뷰가 아주 좋아요2.주차장이 넉넉합니다(지하도 있음)3.편의점 ,카페 1분거리 위치4.손 뻗으면 바다 산책 가능5.금연이라 그런지 방에서 담배냄새 안남6.여자사장님? 친절함7.자는 부분 깨끗함단점1.화장실 = 곰팡이 집2.카펫 먼지 천국(결국 알레르기 약 먹었어요)3.에어컨도(히터) 위와 마찬가지4.손님의 말을 귀담아 듣지 않음5.누수로 안한 벽 곳곳에 자국 6.하수구 냄새7.냉장고 의문의 머리카락8.라면. 탕. 회 등등 냄새나는 음식 불가(어차피 안먹을ㄹ거여서 상관없었지만 알고 오셔야 편하겠죠?)9.노래방 이용불가*음식. 노래방 공지 미리 앱에 등록해놓으세요 사장님 이 호텔이 깔끔하다고 하시는 분들은 집이 진짜 더러우신가 봐요.침대는 깨끗하죠 침대만요 ㅎㅎㅎ화장실 진짜 역대급이요샤워기 물 때랑 곰팡이가 있는데요.. 물줄기 나오는 곳에 곰팡이가 더덕더덕 껴있는 건 처음봐요!물트는 손잡이 + 세면대 (보이는 곳 만 깨끗) 커튼도 ㅋㅋㅋㅋ 곰팡이...보니까 아주머니가 하시던데 일주일에 한번씩이라도 락스 해달라고 하면 청소비 더 드리나요?왜 화장실 청소 검사를 안하세요?점검도 안하시고 그냥 아 했겠지~ 하시나요?저는요 리뷰를 안써요 좋으면 땡잡은거고 나쁘면 똥 밟았다공 생각합니다 ( •́ .̫ •̀ )근데 이런 단점들 다 참을 수 있는데요...왜 제 방에 들어요셔서 물건을 건드세요? ㅋㅋㅋ룸청소 필요 없다고 분명히 전달드렸고 그때 직원3명이 같이 들었습니다 ㅋㅋㅋㅋ 한명도 청소 아줌마한테 전달을 안 하셨다고요?....청소는 청소인데요 왜 제 물건을 건드시냐고요저는 물건위치 정확하게 기억하거든요 정말 불쾌합니다저는 이 문제만 아니면 그냥 리뷰 안쓰고 가런갑다ㅏ 했을 거예요',\n", + " '오전 오후에 계신 분은 매우 친절하셨는데새벽에 계신 분은 뭐 때문인지 굉장히 쌀쌀 맞으시더라고요시설이나 뷰는 좋았습니다바다뷰도 보이구요 ~',\n", + " '곽지해수욕장 인근에 위치해 있어 어린 자녀들이 놀기에 좋을 것 같아요.저희는 아이들이 커서 숙소인근에서 놀지 못하고 차로 이동해 놀고 오는 불편함이 있었네요',\n", + " '가족끼리 성인 4인이 묵었어서 더블침대 2개있는 일반룸했는데 사이즈가 뭘 시켜먹는다거나 뭘하긴 좀 작고, 어차피 제주관광을 위주로 하면 어차피 늦게 들어가기 때문에 딱 잠만 자기 괜찮은 것 같아요. 담에 가면 테라스 있는 방으로 해야겠어요 ㅎ.ㅎ 하지만 아침에 일어났을 때 보이는 뷰와 방의 청결도, 근처 편의점과 구경거리 등 편의성 생각하면 전체 평점결론은 좋다!! 입니당ㅎㅎ',\n", + " '여사장님이 너무 친절하시고 업텐션이셔서 숙소에 대한 평가가 높아집니다. 근데 오션뷰로 예약하기엔 바다가 좀 거리가 있고 3층이라 잘 보이지도 않아서 가성비가 좀 떨어진다는 생각이 있네요. 바닷가라 약간 짠내가 호텔 자체에서 나긴하는데 객실 안에서는 안나서 좋았습니다. 객실 내부는 청결하고 만족한 숙소였습니다.',\n", + " '방음이 안 됩니다. 윗층에서 물 쓰면 물 내려가는 소리가 다 들려요ㅠㅠ변기물 소리인지 샤워기 물소린지... 벽간 또는 층간 방음도 안 돼서 밤새 다른 객실 떠드는 소리도 다 들립니다. 창문 다 닫고 객실 문도 열린 건 아닌지 확인했을 정도로 너무 시끄러웠어요. 새벽까지 떠드는 소리에 잠을 못 잤습니다. 제가 숙박했을 땐 주변 객실 투숙객이 밤새 놀았서인지 편하진 않았어요. 다음날 너무 피곤했습니다. 다음날 일정이 없다면 위치도 좋고 해수욕장 앞이라 오겠지만 투숙객에 따라 달라지는 방음 문제로 일정이 있다면 안 올 것 같아요.',\n", + " '5층객실 받았는데 일단뷰가 미쳤고...저녁에 펍에서 나오는 노래&파도소리 테라스에 앉아서 힐링지대루 했습니다. 직원분도 친절하게 객실들어가전에 주의사항 말해주시고 다음에도 이호텔을 찾고싶을정도로 만족스러웠습니다.',\n", + " '전반적으로 만족합니다바로 앞 상권과 해수욕장,지하주차장이 있어 편리합니다하지만 오션뷰 창문 앞 캠핑사이트가 있어 창문을 열고 있기 꺼려집니다',\n", + " '곽지해수욕장 바로 앞에 위치하고 있어서 선택한 숙소입니다. 얼마전에 리모델링을 해서 시설이 깔끔합니다. 다만 객실 현관까지 카펫이 깔려있는 것과 샤워부스 턱이 낮아서 세면대쪽까지 물이 올라오는 것이 단점이었습니다. 그것만 제외하면 만족할만한 숙소였습니다. 직원분들도 아주 친절했어요 :)',\n", + " '직원분들도 친절하시고 대부분 좋았는데 방음이 전혀 안되는지 일요일아침7시부터 옆방 애기가 자지러지게 우는 소리에 깼어요 하아 ㅠㅠ 푹쉬러온건데 4시간자고 나왔네요...',\n", + " '문을 열고 들어가서 첫느낌은..첫눈에 반함.ㅎㅎ곽지해변의 푸른바다와, 세련되고 깔끔한 방컨디션에도 이호텔의 선택은 정말..잘했다는거.^^주변에 맛집이 있어서 더더욱 즐겁게 보내고 왔습니다.감사합니다.',\n", + " '곽지해변을 바라볼수 있어 좋았습니다. 마지막날 아이가 해변에서 노는걸 좋아하여 체크인 11시에서 2만원 비용주고 2시간 연장을 하였습니다 혹시나 수건이 모자를까 요청을 드렸는데 안된다고 하시네요 비용을 내야한다고 3박을 여기서 다묵었는데 단천원이였지만 그거때문에 기분은 좋지않았습니다.',\n", + " '위생, 청결 부분에서 최악이여도 괜찮으신 분들 가셔요..여기저기 찍는것도 거북해서 커텐에 있는 얼룩 딱 한 부분 찍었는데... 여기말고도 굉장히 얼룩들 많구요..화장실은 곰팡이 천국이고 수건에도 먼지투성이여서 씻고 나와서 닦으면 먼지들이 몸에 붙어있구요..하하',\n", + " '호텔은 깔끔하고 좋았는데 호텔에도 그주변에도 갈만한데가 별로없고 오션뷰이긴한데 그사이에 주차장이 길게있어서 딱히 오션뷰의 느낌도 별로 없었던것같아 아쉬웠어요. 진짜 딱 잠만자는 호탤로 작당한것 같아요',\n", + " '나쁘지 않아요 친절해요칫솔같은 어메니티 다 있어요 긍데 넷플릭스나 티비 다시보기 기능도 없웃우요 제일 작은 방이긴 했어용 침대가 좀 딱딱 햇어요 오히려 좋은 분도 계실지도?',\n", + " '안녕하십니까, 고객님. 마레보비치호텔입니다.우선 호텔방문과 함꼐 값진 후기 말씀에 진심으로 감사드립니다.고객님의 소중한 의견에 보답하고자 2024년 10월 8일 전 객실을 [숙면의 과학 에이스침대]로 전면교체 하였습니다.앞으로도 저희 마레보비치호텔에서 휴식을 보다 더 휴식답게 누리실 수 있도록 노력하겠습니다.',\n", + " '화장실만 최고 그래서 별1개... 객실의 메트리스와 천장은 최악의 숙소였어요ㅜ.. 더블침대 2개여서 좋아했는데, 침대 메트리스는 꺼지고, 누우니 등쪽은 배겨서 잠을 자기 힘들었어요..불을 켜고 천장을 보니, 호텔 천장이 노출 컨셉인가봐요.. 콘크리트인지 합판인지 사진과 같은 천장 마감이었어요.. 많은 숙소를 다녀본것은 아니지만, 이런 메트리스와 천장마감은 경험해본적 없었네요...밤에 직원분에게 메트리스에 대한 불만을 제기했지만, 빈방도 없고, 메트리스 큰 문제는 없어 보인다, 그저 미안하다, 호텔 후기도 좋으며 메트리스 불만제기한 손님없었다, 가장 저렴한방이다 (8만원대)라고 대처하심..꺼짐이 덜하고, 등이 덜 배긴 가장자리에서 밤새 겨우 잠을 청하고 퇴실할때 로비에서 직원을 찾았지만, 로비엔 아무도 없었음....두번 다시 찾고 싶지 않은 숙소였음 ㅜ...',\n", + " '주차 하나는 쉽고 방음 잘되는 편같아요. 생각한것보다 너무 모텔 느낌이었어요. 콘센트도 침대에서 멀리있구요. 오션뷰라지만 바다가 조금 멀리 있는 오션뷰고, 프론트와 같은 건물이 아닌 옆동으로 무거운 캐리어를 옮겨가야했습니다. 이점은 좀 번거로웠어요. 아침에 체크아웃 해주신 여자 사장님?은 엄청 친절하셨어요!',\n", + " '아..오션뷰라고해서 .. ㅋㅋ잡았는데 하...네. 오션 ..뷰...입니다.그리고청결하진않습니다.',\n", + " '입실 후 에어컨을 가동하였는데 더웠습니다. 전화로 문의 드렸더니 30분정도 더 있으면 시원해질거라고 말씀해주셔서 기다렸습니다. 그러나 시원해지지 않아 다시 전화드리니 나이든 남자직원분께서 방문해주셨습니다. 그러나 문제가 없다며 커튼치고 햇빛이 없는 저녁이 되면 시원해질거라 하셨습니다. 애초에 오션뷰를 예약했는데 왜 커튼을 쳐야하는지도 의문이지만 더위가 우선이라 커튼을 치고 생활했습니다. 에어컨을 가동한채로 밖에서 저녁식사를 하고 돌아왔는데도 더웠습니다. 다시 문의드리니 선풍기를 가져다드리겠다고 하셔서 알겠다고 했습니다. 젊은 남자 직원분께서 친절히 에어컨 상태도 봐주시더니 에어컨 필터도 세척해서 다시 주셨습니다. 추후는 시원해졌지만 사장님의 태도에 실망스러웠습니다. 덥다는 문의를 많이 받으신다고 했는데 그럼 대책이 필요할 것 같습니다. 남자사장님께서 젊은 직원분께 일을 떠맡기는 것 같고 회피하시는 것 같아 다소 별로였습니다. 쾌적하고 좋은 서비스를 바라시는분껜 비추천 입니다.',\n", + " '방도 사진대비 엄청좁고 자는데 알수없는 소리 (냉장고 전기흐르는잡소리) 그리고 방컨디션이 최악수준 곰팡이냄새도 많이납니다.. 사진만보고 평타수준이라도 기대했는데 이런방이무슨 10만원을받나요 ㅎㅎㅎ',\n", + " '부모님 대신 예약해드렸는데화장실 수압이 너무 약했다고 하네요변기수압이 약해서 물 두번 이상 내렸고 욕조에서 샤워후에 물이 안내려가서 찝찝했다고 합니다양치하는데도 양치 물도 잘 안내려가고..재방문의사 없어요..',\n", + " '30년만의제주나들이침대가 편하고바다 전망도좋구룸서비스도맘에들구요.곽지해수욕장이 바로 앞에있어 산책하기에 넘좋아요!전반적으로 아주 맘에 듭니다아주 잘쉬었다갑니다!',\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", + " '경치가 너무좋았어요!객실이 좀 좁긴했지만 저렴한가격에 깨끗하고 어차피 잠만 잘꺼니깐요!']" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# 리뷰 텍스트 추출\n", "################################\n", - "# reviews_class = \n", + "reviews_class = soup.select('.content-text')\n", "################################\n", "reviews = []\n", "\n", @@ -164,22 +386,254 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5,\n", + " 5]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# 별점 추출\n", "ratings = []\n", "################################\n", - "# rating_containers = \n", + "rating_containers = soup.select('.css-1mdp7n')\n", "################################\n", "\n", "# 각 리뷰별로 별점 계산\n", "for container in rating_containers:\n", " ################################\n", " ######## your code here ########\n", + " stars = container.select('.css-1mj121y')\n", + " rating = len(stars)\n", " ################################\n", - " \n", + "\n", " ratings.append(rating)\n", "\n", "ratings" @@ -195,9 +649,117 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "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", + "
RatingReview
05친구들 3명에서 급하게 예약을 했던 숙손데 와.. 우선 프론트 직원님들.. 진짜 너...
15작년에 친구들이랑 방문 했다가 좋아서 다른 친구 데리고 다시 방문 했는데 머리 묶으...
25오전 일찍 도착해서 짐을 맡겼는데, 여자사장님께서 정말 밝고 유쾌하게 응대해 주셔서...
35저는 어딜가든 진짜 리뷰 안쓰는데..처음간 여행에 너무좋은기억이라서 글몇자 올려봅니...
45제주도 당일예약해서 하루묵게 되엇어요~편의점도 바로앞에잇고 간단히맥주한캔 마시고 ...
.........
2155숙소 깨끗하고 좋아요무엇보다 뷰가 좋아요
2165굿굿 좋습니다 ㅎㅎ
2175너무좋았습니다 굿굿
2185전반적으로 만족했습니다
2195큰 기대없이 급히 예약했는데...숙소보고 놀랬어요...잘쉬었습니다... ^^
\n", + "

220 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " Rating Review\n", + "0 5 친구들 3명에서 급하게 예약을 했던 숙손데 와.. 우선 프론트 직원님들.. 진짜 너...\n", + "1 5 작년에 친구들이랑 방문 했다가 좋아서 다른 친구 데리고 다시 방문 했는데 머리 묶으...\n", + "2 5 오전 일찍 도착해서 짐을 맡겼는데, 여자사장님께서 정말 밝고 유쾌하게 응대해 주셔서...\n", + "3 5 저는 어딜가든 진짜 리뷰 안쓰는데..처음간 여행에 너무좋은기억이라서 글몇자 올려봅니...\n", + "4 5 제주도 당일예약해서 하루묵게 되엇어요~편의점도 바로앞에잇고 간단히맥주한캔 마시고 ...\n", + ".. ... ...\n", + "215 5 숙소 깨끗하고 좋아요무엇보다 뷰가 좋아요\n", + "216 5 굿굿 좋습니다 ㅎㅎ\n", + "217 5 너무좋았습니다 굿굿\n", + "218 5 전반적으로 만족했습니다\n", + "219 5 큰 기대없이 급히 예약했는데...숙소보고 놀랬어요...잘쉬었습니다... ^^\n", + "\n", + "[220 rows x 2 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import pandas as pd\n", "\n", @@ -221,10 +783,21 @@ "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "5.0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# 평균 별점 계산\n", - "# average_rating = " + "average_rating = round(sum(ratings) / len(ratings), 2)" ] }, { @@ -237,7 +810,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -248,13 +821,13 @@ "korean_stopwords = set(['이', '그', '저', '것', '들', '다', '을', '를', '에', '의', '가', '이', '는', '해', '한', '하', '하고', '에서', '에게', '과', '와', '너무', '잘', '또','좀', '호텔', '아주', '진짜', '정말'])\n", "\n", "# 모든 리뷰를 하나의 문자열로 결합\n", - "# all_reviews_text = \n", + "all_reviews_text = ' '.join(reviews)\n", "\n", "# 단어 추출 (특수문자 제거)\n", - "# words = \n", + "words = re.findall(r'[가-힣]+', all_reviews_text)\n", "\n", "# 불용어 제거\n", - "# filtered_words = \n", + "filtered_words = [word for word in words if word not in korean_stopwords and len(word) > 1]\n", "\n", "# 단어 빈도 계산\n", "word_counts = Counter(filtered_words)\n", @@ -273,9 +846,154 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, - "outputs": [], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RatingReviewAverage RatingCommon Words
05.0친구들 3명에서 급하게 예약을 했던 숙손데 와.. 우선 프론트 직원님들.. 진짜 너...NaNNaN
15.0작년에 친구들이랑 방문 했다가 좋아서 다른 친구 데리고 다시 방문 했는데 머리 묶으...NaNNaN
25.0오전 일찍 도착해서 짐을 맡겼는데, 여자사장님께서 정말 밝고 유쾌하게 응대해 주셔서...NaNNaN
35.0저는 어딜가든 진짜 리뷰 안쓰는데..처음간 여행에 너무좋은기억이라서 글몇자 올려봅니...NaNNaN
45.0제주도 당일예약해서 하루묵게 되엇어요~편의점도 바로앞에잇고 간단히맥주한캔 마시고 ...NaNNaN
...............
2165.0굿굿 좋습니다 ㅎㅎNaNNaN
2175.0너무좋았습니다 굿굿NaNNaN
2185.0전반적으로 만족했습니다NaNNaN
2195.0큰 기대없이 급히 예약했는데...숙소보고 놀랬어요...잘쉬었습니다... ^^NaNNaN
220NaNNaN5.0좋고(36), 좋았어요(34), 바로(34), 좋아요(32), 좋았습니다(31), ...
\n", + "

221 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " Rating Review \\\n", + "0 5.0 친구들 3명에서 급하게 예약을 했던 숙손데 와.. 우선 프론트 직원님들.. 진짜 너... \n", + "1 5.0 작년에 친구들이랑 방문 했다가 좋아서 다른 친구 데리고 다시 방문 했는데 머리 묶으... \n", + "2 5.0 오전 일찍 도착해서 짐을 맡겼는데, 여자사장님께서 정말 밝고 유쾌하게 응대해 주셔서... \n", + "3 5.0 저는 어딜가든 진짜 리뷰 안쓰는데..처음간 여행에 너무좋은기억이라서 글몇자 올려봅니... \n", + "4 5.0 제주도 당일예약해서 하루묵게 되엇어요~편의점도 바로앞에잇고 간단히맥주한캔 마시고 ... \n", + ".. ... ... \n", + "216 5.0 굿굿 좋습니다 ㅎㅎ \n", + "217 5.0 너무좋았습니다 굿굿 \n", + "218 5.0 전반적으로 만족했습니다 \n", + "219 5.0 큰 기대없이 급히 예약했는데...숙소보고 놀랬어요...잘쉬었습니다... ^^ \n", + "220 NaN NaN \n", + "\n", + " Average Rating Common Words \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "4 NaN NaN \n", + ".. ... ... \n", + "216 NaN NaN \n", + "217 NaN NaN \n", + "218 NaN NaN \n", + "219 NaN NaN \n", + "220 5.0 좋고(36), 좋았어요(34), 바로(34), 좋아요(32), 좋았습니다(31), ... \n", + "\n", + "[221 rows x 4 columns]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# 분석 결과 요약\n", "summary_df = pd.DataFrame({\n", @@ -298,12 +1016,12 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "# Excel 파일로 저장\n", - "######## your code here ########" + "final_df.to_excel('yanolja_reviews_analysis.xlsx', index=False)" ] }, { @@ -316,7 +1034,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ diff --git a/uuyeong/static-crawling_assignment.py b/uuyeong/static-crawling_assignment.py new file mode 100644 index 0000000..71e8511 --- /dev/null +++ b/uuyeong/static-crawling_assignment.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python +# coding: utf-8 + +# # 알라딘 도서 페이지 정적 크롤링 +# 알라딘 도서 페이지에서 데이터를 추출하면서 정적 크롤링을 복습합니다. + +# ### 1. 필요한 라이브러리 설치 및 임포트 +# 먼저, 웹 크롤링을 위해 필요한 라이브러리들을 설치하고 임포트합니다. +# +# - bs4: BeautifulSoup 라이브러리는 HTML/XML 페이지를 파싱하여 데이터를 쉽게 추출할 수 있게 도와줍니다. +# - requests: HTTP 요청을 보내 웹 페이지의 HTML을 받아오는 라이브러리입니다. +# - pandas: 데이터를 표 형태로 처리하고, csv 파일로 저장하는 데 사용됩니다. + +# In[24]: + + +get_ipython().system('pip install bs4') +get_ipython().system('pip install requests') +get_ipython().system('pip install pandas') + + +# ### 2. HTML 페이지 불러오기 및 파싱 +# 이제 웹 페이지를 불러와서 HTML을 파싱하여 필요한 데이터를 추출하는 작업을 시작합니다. +# +# - requests.get(url): 지정한 URL에 HTTP GET 요청을 보냅니다. +# - BeautifulSoup(html, 'html.parser'): 응답 받은 HTML을 BeautifulSoup을 사용해 파싱합니다. + +# In[25]: + + +from bs4 import BeautifulSoup +import requests +""" +TODO +1. requests 라이브러리로 url을 받아옵니다. +2. Beautifulsoup로 html 문서를 파싱합니다. +""" + +# 알라딘 베스트셀러 페이지 URL +url = "https://www.aladin.co.kr/shop/common/wbest.aspx?BestType=Bestseller&BranchType=1&CID=0&page=1&cnt=1000&SortOrder=1" +response = requests.get(url) +html = response.text # 응답 받은 HTML 문서 +soup = BeautifulSoup(html, 'html.parser')# BeautifulSoup으로 파싱 +soup + + +# ### 3. 특정 HTML 요소 선택 +# 크롤링할 HTML 요소를 선택하기 위해 CSS 선택자를 사용하여 데이터를 추출합니다. +# +# - soup.select_one(): CSS 선택자를 사용하여 첫 번째 일치하는 요소를 선택합니다. +# - tree: 선택된 HTML 요소(첫 번째 단락)에 대한 정보를 담고 있습니다. + +# In[26]: + + +# 먼저 페이지 구조를 확인해보겠습니다 +print("페이지에서 찾을 수 있는 클래스들:") +for element in soup.find_all(class_=True)[:10]: # 처음 10개 요소만 확인 + print(f"클래스: {element.get('class')}, 태그: {element.name}") + +# 다른 선택자들을 시도해보겠습니다 +tree = soup.select_one('.ss_book_box') +if tree is None: + tree = soup.select_one('.ss_book_list') +if tree is None: + tree = soup.select_one('li') + +print(f"\n선택된 tree: {tree}") +tree + + +# + +# ### 4. 정보 추출: 제목, 링크, 할인가, 별점 +# 선택한 HTML 요소에서 원하는 데이터를 추출합니다. +# - title_tag.text: title_tag 요소에서 텍스트(제목)를 추출합니다. +# - title_tag.attrs['href']: title_tag 요소에서 링크를 추출합니다. +# - price_tag.text, review_tag.text : 각각 할인가, 별점을 추출합니다. + +# In[27]: + + +# 제목과 링크 추출 +title_tag = tree.select_one(".bo3") +title_tag.text, title_tag.attrs['href'] + + +# In[29]: + + +# 할인가와 별점 추출 +price_tag = tree.select_one('.ss_p2') +review_tag = tree.select_one('.star_score') +price_tag.text, review_tag.text + + +# ### 5. 한 페이지에서 모든 도서 정보 추출 +# 한 페이지에 여러 도서가 있을 때, 모든 도서의 정보를 추출합니다. +# +# - soup.select(): 여러 개의 요소를 선택하여 리스트로 반환합니다. +# - 각 질문에 대해 for 루프를 돌며 제목, 링크, 할인가, 별점을 추출합니다. + +# In[42]: + + +""" +TODO +위 코드를 기반으로 빈칸을 채워 완성하세요. + +참조 : try-except문을 통해 원하는 정보가 없는 도서의 경우를 넘어가도록 합니다. +웹사이트의 정보는 늘 균일하지 않기에 크롤링에서 예외처리는 중요합니다. +""" + +trees = soup.select(".ss_book_box") +for tree in trees: + try: + title = tree.select_one(".bo3") + title_text = title.text + title_link = title.attrs['href'] + price = tree.select_one('.ss_p2').text + review = tree.select_one('.star_score').text + print(title_text, title_link, price, review) + except: continue + + + +# ### 6. 여러 페이지 크롤링 +# 페이지를 변경하면서 여러 페이지의 데이터 크롤링을 해봅시다. +# +# - for page_num in range(1, 4): 1페이지부터 3페이지까지 순차적으로 크롤링합니다. +# - 각 페이지에서 데이터를 추출하여 datas 리스트에 추가하고, 이를 pandas DataFrame으로 변환하여 csv 파일로 저장합니다. + +# In[31]: + + +import pandas as pd + + +# In[45]: + + +""" +TODO +1. for loop을 통해 여러 페이지로 이동합니다. +HINT : formatted string을 활용합니다. +2. 내부 for loop에서 위 코드에서 실행했던 한 페이지에서 도서 정보 모으기를 실행합니다. +3. DataFrame에 정보를 저장합니다. +""" + +datas = [] +for page_num in range(1, 4): + url = f"https://www.aladin.co.kr/shop/common/wbest.aspx?BestType=Bestseller&BranchType=1&CID=0&page={page_num}" + response = requests.get(url) + html = response.text + soup = BeautifulSoup(html, 'html.parser') + trees = soup.select(".ss_book_box") + for tree in trees: + try: + title = tree.select_one(".bo3") + title_text = title.text + title_link = title.attrs['href'] + price = tree.select_one('.ss_p2').text + review = tree.select_one('.star_score').text + datas.append([title_text, title_link, price, review]) + except: continue + +df = pd.DataFrame(datas, columns=['title_text', 'title_link', 'price', 'review']) +df + + +# ### 7. 결과 저장 +# 위의 크롤링한 데이터를 csv 파일로 저장합니다. +# +# - df.to_csv(): 추출한 데이터를 csv 파일로 저장합니다. index=False를 설정하여 인덱스를 제외하고 저장합니다. + +# In[46]: + + +# csv 파일로 저장해 봅시다. +df.to_csv('aladin_bestseller.csv', index=False) + diff --git a/uuyeong/yanolja.py b/uuyeong/yanolja.py new file mode 100644 index 0000000..6d29b11 --- /dev/null +++ b/uuyeong/yanolja.py @@ -0,0 +1,194 @@ +#!/usr/bin/env python +# coding: utf-8 + +# # Yanolja 리뷰 크롤링 및 분석 +# +# 이번 노트북에서는 Selenium을 사용하여 Yanolja의 호텔 리뷰 페이지에서 데이터를 크롤링하고, 수집한 데이터에 대해 분석을 진행합니다. 이 과정에서는 웹페이지 로드, 데이터 추출, 텍스트 처리 및 분석 결과를 Excel 파일로 저장하는 작업을 포함합니다. + +# ### 1단계: Selenium으로 웹페이지 로드 +# +# Selenium을 사용하여 Yanolja 리뷰 페이지를 로드하고, 스크롤을 내려서 더 많은 데이터를 가져옵니다. + +# In[2]: + + +get_ipython().system('pip install selenium') +get_ipython().system('pip install bs4') +get_ipython().system('pip install pandas') +get_ipython().system('pip install openpyxl') + + +# In[9]: + + +from selenium import webdriver +import time + +# Selenium 드라이버 설정 (Chrome 사용) +driver = webdriver.Chrome() + +# Yanolja 리뷰 페이지로 이동 +url = 'https://www.yanolja.com/reviews/domestic/10041505' +######## your code here ######## +driver.get(url) +# 페이지 로딩을 위해 대기 +time.sleep(3) + +# 스크롤 설정: 페이지 하단까지 스크롤을 내리기 +scroll_count = 10 # 스크롤 횟수 설정 +for _ in range(scroll_count): + ######## your code here ######## + driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") + time.sleep(1) # 스크롤 이후 대기 + + +# ### 2단계: 페이지 소스 가져오기 +# 웹페이지의 HTML 소스를 가져와서 BeautifulSoup을 사용해 데이터를 파싱합니다. + +# In[10]: + + +from bs4 import BeautifulSoup + +# 웹페이지 소스 가져오기 +page_source = driver.page_source + +# BeautifulSoup를 사용하여 HTML 파싱 +soup = BeautifulSoup(page_source, 'html.parser') + + +# ### 3단계: 리뷰 텍스트 추출 +# 리뷰 텍스트를 추출하고 불필요한 공백이나 줄 바꿈을 제거합니다. + +# In[11]: + + +# 리뷰 텍스트 추출 +################################ +reviews_class = soup.select('.content-text') +################################ +reviews = [] + +# 각 리뷰 텍스트 정리 후 추가 +for review in reviews_class: + cleaned_text = review.get_text(strip=True).replace('\r', '').replace('\n', '') + reviews.append(cleaned_text) + +reviews + + +# ### 4단계: 별점 데이터 추출 +# HTML에서 별점 데이터를 추출하고, 각 리뷰의 별점을 계산합니다. + +# In[13]: + + +# 별점 추출 +ratings = [] +################################ +rating_containers = soup.select('.css-1mdp7n') +################################ + +# 각 리뷰별로 별점 계산 +for container in rating_containers: + ################################ + ######## your code here ######## + stars = container.select('.css-1mj121y') + rating = len(stars) + ################################ + + ratings.append(rating) + +ratings + + +# ### 5단계: 데이터 정리 및 DataFrame으로 변환 +# 수집된 데이터를 Pandas DataFrame으로 변환하여 후속 분석을 용이하게 만듭니다. + +# In[14]: + + +import pandas as pd + +# 별점과 리뷰를 결합하여 리스트 생성 +data = list(zip(ratings, reviews)) + +# DataFrame으로 변환 +df_reviews = pd.DataFrame(data, columns=['Rating', 'Review']) +df_reviews + + +# ### 6단계: 리뷰 분석 - 평균 별점 계산 +# 수집된 리뷰에서 평균 별점을 계산합니다. + +# In[ ]: + + +# 평균 별점 계산 +average_rating = round(sum(ratings) / len(ratings), 2) + + +# ### 7단계: 자주 등장하는 단어 추출 +# 리뷰 텍스트에서 자주 등장하는 단어를 추출하고, 불용어를 제거하여 분석합니다. + +# In[19]: + + +from collections import Counter +import re + +# 불용어 리스트 (한국어) +korean_stopwords = set(['이', '그', '저', '것', '들', '다', '을', '를', '에', '의', '가', '이', '는', '해', '한', '하', '하고', '에서', '에게', '과', '와', '너무', '잘', '또','좀', '호텔', '아주', '진짜', '정말']) + +# 모든 리뷰를 하나의 문자열로 결합 +all_reviews_text = ' '.join(reviews) + +# 단어 추출 (특수문자 제거) +words = re.findall(r'[가-힣]+', all_reviews_text) + +# 불용어 제거 +filtered_words = [word for word in words if word not in korean_stopwords and len(word) > 1] + +# 단어 빈도 계산 +word_counts = Counter(filtered_words) + +# 자주 등장하는 상위 15개 단어 추출 +common_words = word_counts.most_common(15) + + +# ### 8단계: 분석 결과 요약 +# 평균 별점과 자주 등장하는 단어를 DataFrame으로 만들어 최종 분석 결과를 요약합니다. + +# In[20]: + + +# 분석 결과 요약 +summary_df = pd.DataFrame({ + 'Average Rating': [average_rating], + 'Common Words': [', '.join([f"{word}({count})" for word, count in common_words])] +}) + +# 최종 DataFrame 결합 +final_df = pd.concat([df_reviews, summary_df], ignore_index=True) +final_df + + +# ### 9단계: Excel 파일로 저장 +# 최종 결과를 Excel 파일로 저장합니다. + +# In[21]: + + +# Excel 파일로 저장 +final_df.to_excel('yanolja_reviews_analysis.xlsx', index=False) + + +# ### 10단계: 드라이버 종료 +# 크롤링이 끝난 후, Selenium 드라이버를 종료합니다. + +# In[22]: + + +# 드라이버 종료 +driver.quit() +