-
Notifications
You must be signed in to change notification settings - Fork 10
3기_2주차_김윤진 #9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
3기_2주차_김윤진 #9
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,104 @@ | ||||||||||||||||||||||||||||||||||||||||||||
| !pip install selenium | ||||||||||||||||||||||||||||||||||||||||||||
| !pip install bs4 | ||||||||||||||||||||||||||||||||||||||||||||
| !pip install pandas | ||||||||||||||||||||||||||||||||||||||||||||
| !pip install openpyxl | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| from selenium import webdriver | ||||||||||||||||||||||||||||||||||||||||||||
| from selenium.webdriver.common.by import By | ||||||||||||||||||||||||||||||||||||||||||||
| import time | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # Selenium 드라이버 설정 (Chrome 사용) | ||||||||||||||||||||||||||||||||||||||||||||
| driver = webdriver.Chrome() | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # Yanolja 리뷰 페이지로 이동 | ||||||||||||||||||||||||||||||||||||||||||||
| url = 'https://www.yanolja.com/reviews/domestic/10041505' | ||||||||||||||||||||||||||||||||||||||||||||
| 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);") | ||||||||||||||||||||||||||||||||||||||||||||
| # 리뷰 요소 가져오기 (예시: 리뷰 텍스트가 들어있는 div 태그) | ||||||||||||||||||||||||||||||||||||||||||||
| reviews = driver.find_elements("css selector", ".css-vjs6b8") | ||||||||||||||||||||||||||||||||||||||||||||
| time.sleep(1) # 스크롤 이후 대기 | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| from bs4 import BeautifulSoup | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 웹페이지 소스 가져오기 | ||||||||||||||||||||||||||||||||||||||||||||
| page_source = driver.page_source | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # BeautifulSoup를 사용하여 HTML 파싱 | ||||||||||||||||||||||||||||||||||||||||||||
| soup = BeautifulSoup(page_source, 'html.parser') | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 리뷰 텍스트 추출 | ||||||||||||||||||||||||||||||||||||||||||||
| reviews_class = soup.select(".review-item-container") | ||||||||||||||||||||||||||||||||||||||||||||
| reviews = [] | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 각 리뷰 텍스트 정리 후 추가 | ||||||||||||||||||||||||||||||||||||||||||||
| for review in reviews_class: | ||||||||||||||||||||||||||||||||||||||||||||
| cleaned_text = review.get_text(strip=True).replace('\r', '').replace('\n', '') | ||||||||||||||||||||||||||||||||||||||||||||
| reviews.append(cleaned_text) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| ratings = [] | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| for review_container in reviews_class: | ||||||||||||||||||||||||||||||||||||||||||||
| star_container = review_container.select_one(".css-rz7kwu") | ||||||||||||||||||||||||||||||||||||||||||||
| if not star_container: | ||||||||||||||||||||||||||||||||||||||||||||
| ratings.append(0) | ||||||||||||||||||||||||||||||||||||||||||||
| continue | ||||||||||||||||||||||||||||||||||||||||||||
| stars = star_container.find_all("svg") | ||||||||||||||||||||||||||||||||||||||||||||
| filled_stars = sum( | ||||||||||||||||||||||||||||||||||||||||||||
| 1 for star in stars if not (star.find("path") and star.find("path").get("fill-rule") == "evenodd") | ||||||||||||||||||||||||||||||||||||||||||||
| ) #stars 안의 각 star에 대해 path의 fill-rule 속성이 evenodd이면 1을 더함 | ||||||||||||||||||||||||||||||||||||||||||||
| ratings.append(filled_stars) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+48
to
+58
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Star-count logic inverted vs comment. The comment says “count when fill-rule == evenodd”, but code counts when it’s NOT. Fix to avoid wrong ratings. Apply this diff: - stars = star_container.find_all("svg")
- filled_stars = sum(
- 1 for star in stars if not (star.find("path") and star.find("path").get("fill-rule") == "evenodd")
- ) #stars 안의 각 star에 대해 path의 fill-rule 속성이 evenodd이면 1을 더함
+ stars = star_container.find_all("svg")
+ filled_stars = sum(
+ 1 for star in stars
+ if (star.find("path") and star.find("path").get("fill-rule") == "evenodd")
+ ) # fill-rule == "evenodd" 인 경우만 카운트📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||
| import pandas as pd | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 별점과 리뷰를 결합하여 리스트 생성 | ||||||||||||||||||||||||||||||||||||||||||||
| data = list(zip(ratings, reviews)) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # DataFrame으로 변환 | ||||||||||||||||||||||||||||||||||||||||||||
| df_reviews = pd.DataFrame(data, columns=['Rating', 'Review']) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 평균 별점 계산 | ||||||||||||||||||||||||||||||||||||||||||||
| average_rating = sum(ratings) / len(ratings) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+67
to
+69
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Guard against division by zero when no ratings found. Apply this diff: -# 평균 별점 계산
-average_rating = sum(ratings) / len(ratings)
+# 평균 별점 계산
+average_rating = round(sum(ratings) / len(ratings), 2) if ratings else None📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||
| from collections import Counter | ||||||||||||||||||||||||||||||||||||||||||||
| import re | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 불용어 리스트 (한국어) | ||||||||||||||||||||||||||||||||||||||||||||
| korean_stopwords = set(['이', '그', '저', '것', '들', '다', '을', '를', '에', '의', '가', '이', '는', '해', '한', '하', '하고', '에서', '에게', '과', '와', '너무', '잘', '또','좀', '호텔', '아주', '진짜', '정말']) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 모든 리뷰를 하나의 문자열로 결합 | ||||||||||||||||||||||||||||||||||||||||||||
| all_reviews_text = " ".join(reviews) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 단어 추출 (특수문자 제거) | ||||||||||||||||||||||||||||||||||||||||||||
| words = re.findall(r"[가-힣]+", all_reviews_text) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 불용어 제거 | ||||||||||||||||||||||||||||||||||||||||||||
| filtered_words = [w for w in words if w not in korean_stopwords and len(w) > 1] | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 단어 빈도 계산 | ||||||||||||||||||||||||||||||||||||||||||||
| word_counts = Counter(filtered_words) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 자주 등장하는 상위 15개 단어 추출 | ||||||||||||||||||||||||||||||||||||||||||||
| common_words = word_counts.most_common(15) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 분석 결과 요약 | ||||||||||||||||||||||||||||||||||||||||||||
| 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) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # Excel 파일로 저장 | ||||||||||||||||||||||||||||||||||||||||||||
| final_df.to_excel('yanolja.xlsx', index = False) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| # 드라이버 종료 | ||||||||||||||||||||||||||||||||||||||||||||
| driver.quit() | ||||||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 수고하셨습니다! :) |
||||||||||||||||||||||||||||||||||||||||||||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,136 @@ | ||
| title,link,price,review | ||
| 더 트릭컬,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372424198,"19,800원",10.0 | ||
| 절창,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371723601,"16,200원",9.5 | ||
| 흔한남매 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.3 | ||
| 혼모노,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=361016676,"16,200원",8.7 | ||
| 렛뎀 이론,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369493586,"18,000원",9.8 | ||
| 가라오케 가자!,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=292511593,"7,650원",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=370422490,"31,500원",10.0 | ||
| 시대예보: 경량문명의 탄생,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370922260,"19,800원",9.6 | ||
| "2025 큰별쌤 최태성의 별★별한국사 한국사능력검정시험 심화(1, 2, 3급) 상",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=353981757,"14,850원",9.6 | ||
| "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원",6.0 | ||
| 지박소년 하나코 군 24 (더블 특장판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372013611,"5,400원",10.0 | ||
| "빠졌어, 너에게",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=269056986,"7,650원",9.6 | ||
| 양면의 조개껍데기,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370247727,"15,750원",9.4 | ||
| 체인소 맨 20,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371535926,"5,400원",8.0 | ||
| 팩트풀니스 (50만 부 뉴에디션),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=345384332,"21,420원",8.7 | ||
| 모순,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=25843736,"11,700원",9.1 | ||
| 데뷔 못 하면 죽는 병 걸림 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=365665217,"15,120원",9.6 | ||
| 소설 보다 : 가을 2025,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372103996,"4,950원",8.5 | ||
| 중독은 뇌를 어떻게 바꾸는가,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371105102,"19,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=359025448,"16,020원",9.6 | ||
| 박곰희 연금 부자 수업,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366615290,"18,900원",9.7 | ||
| 여학교의 별 1,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=286633169,"7,650원",9.4 | ||
| 실패를 통과하는 일,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370633659,"18,000원",9.6 | ||
| 저소비 생활,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371178617,"17,100원",9.7 | ||
| 여학교의 별 2,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=293054296,"7,650원",9.8 | ||
| ETF 투자의 모든 것,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368941145,"18,900원",9.9 | ||
| 비트코인 없는 미래는 없다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371990345,"27,900원",10.0 | ||
| 다정한 사람이 이긴다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369431565,"17,100원",9.2 | ||
| 소년이 온다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=40869703,"13,500원",9.6 | ||
| ETS 토익 정기시험 기출문제집 1000 Vol. 4 Reading (리딩),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=330109498,"17,820원",10.0 | ||
| 나 혼자만 레벨업 15 (한정판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372549881,"51,300원",4.0 | ||
| ETS 토익 정기시험 기출문제집 1000 Vol. 4 Listening (리스닝),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=330109271,"17,820원",10.0 | ||
| 어른의 관계를 가꾸는 100일 필사 노트,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370131831,"18,000원",9.9 | ||
| 우리는 언제나 다시 만나,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=113482584,"10,800원",9.7 | ||
| 편안함의 습격,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366122829,"19,800원",9.3 | ||
| 여학교의 별 4,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=361704320,"7,650원",9.9 | ||
| 이타미 준 나의 건축,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370845525,"20,700원",9.3 | ||
| 여학교의 별 3,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=316732827,"7,650원",9.9 | ||
| 달러 자산 1억으로 평생 월급 완성하라,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369730967,"18,900원",9.7 | ||
| 야구선수 임찬규 (리미티드 에디션),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372566693,"19,800원",10.0 | ||
| 더 트릭컬,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372424198,"19,800원",10.0 | ||
| 절창,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371723601,"16,200원",9.5 | ||
| 흔한남매 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.3 | ||
| 혼모노,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=361016676,"16,200원",8.7 | ||
| 렛뎀 이론,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369493586,"18,000원",9.8 | ||
| 가라오케 가자!,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=292511593,"7,650원",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=370422490,"31,500원",10.0 | ||
| 시대예보: 경량문명의 탄생,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370922260,"19,800원",9.6 | ||
| "2025 큰별쌤 최태성의 별★별한국사 한국사능력검정시험 심화(1, 2, 3급) 상",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=353981757,"14,850원",9.6 | ||
| "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원",6.0 | ||
| 지박소년 하나코 군 24 (더블 특장판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372013611,"5,400원",10.0 | ||
| "빠졌어, 너에게",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=269056986,"7,650원",9.6 | ||
| 양면의 조개껍데기,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370247727,"15,750원",9.4 | ||
| 체인소 맨 20,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371535926,"5,400원",8.0 | ||
| 팩트풀니스 (50만 부 뉴에디션),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=345384332,"21,420원",8.7 | ||
| 모순,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=25843736,"11,700원",9.1 | ||
| 데뷔 못 하면 죽는 병 걸림 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=365665217,"15,120원",9.6 | ||
| 소설 보다 : 가을 2025,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372103996,"4,950원",8.5 | ||
| 중독은 뇌를 어떻게 바꾸는가,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371105102,"19,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=359025448,"16,020원",9.6 | ||
| 박곰희 연금 부자 수업,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366615290,"18,900원",9.7 | ||
| 여학교의 별 1,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=286633169,"7,650원",9.4 | ||
| 실패를 통과하는 일,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370633659,"18,000원",9.6 | ||
| 저소비 생활,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371178617,"17,100원",9.7 | ||
| 여학교의 별 2,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=293054296,"7,650원",9.8 | ||
| ETF 투자의 모든 것,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368941145,"18,900원",9.9 | ||
| 비트코인 없는 미래는 없다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371990345,"27,900원",10.0 | ||
| 다정한 사람이 이긴다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369431565,"17,100원",9.2 | ||
| 소년이 온다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=40869703,"13,500원",9.6 | ||
| ETS 토익 정기시험 기출문제집 1000 Vol. 4 Reading (리딩),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=330109498,"17,820원",10.0 | ||
| 나 혼자만 레벨업 15 (한정판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372549881,"51,300원",4.0 | ||
| ETS 토익 정기시험 기출문제집 1000 Vol. 4 Listening (리스닝),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=330109271,"17,820원",10.0 | ||
| 어른의 관계를 가꾸는 100일 필사 노트,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370131831,"18,000원",9.9 | ||
| 우리는 언제나 다시 만나,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=113482584,"10,800원",9.7 | ||
| 편안함의 습격,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366122829,"19,800원",9.3 | ||
| 여학교의 별 4,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=361704320,"7,650원",9.9 | ||
| 이타미 준 나의 건축,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370845525,"20,700원",9.3 | ||
| 여학교의 별 3,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=316732827,"7,650원",9.9 | ||
| 달러 자산 1억으로 평생 월급 완성하라,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369730967,"18,900원",9.7 | ||
| 야구선수 임찬규 (리미티드 에디션),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372566693,"19,800원",10.0 | ||
| 더 트릭컬,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372424198,"19,800원",10.0 | ||
| 절창,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371723601,"16,200원",9.5 | ||
| 흔한남매 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.3 | ||
| 혼모노,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=361016676,"16,200원",8.7 | ||
| 렛뎀 이론,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369493586,"18,000원",9.8 | ||
| 가라오케 가자!,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=292511593,"7,650원",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=370422490,"31,500원",10.0 | ||
| 시대예보: 경량문명의 탄생,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370922260,"19,800원",9.6 | ||
| "2025 큰별쌤 최태성의 별★별한국사 한국사능력검정시험 심화(1, 2, 3급) 상",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=353981757,"14,850원",9.6 | ||
| "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원",6.0 | ||
| 지박소년 하나코 군 24 (더블 특장판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372013611,"5,400원",10.0 | ||
| "빠졌어, 너에게",https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=269056986,"7,650원",9.6 | ||
| 양면의 조개껍데기,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370247727,"15,750원",9.4 | ||
| 체인소 맨 20,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371535926,"5,400원",8.0 | ||
| 팩트풀니스 (50만 부 뉴에디션),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=345384332,"21,420원",8.7 | ||
| 모순,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=25843736,"11,700원",9.1 | ||
| 데뷔 못 하면 죽는 병 걸림 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=365665217,"15,120원",9.6 | ||
| 소설 보다 : 가을 2025,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372103996,"4,950원",8.5 | ||
| 중독은 뇌를 어떻게 바꾸는가,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371105102,"19,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=359025448,"16,020원",9.6 | ||
| 박곰희 연금 부자 수업,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366615290,"18,900원",9.7 | ||
| 여학교의 별 1,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=286633169,"7,650원",9.4 | ||
| 실패를 통과하는 일,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370633659,"18,000원",9.6 | ||
| 저소비 생활,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371178617,"17,100원",9.7 | ||
| 여학교의 별 2,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=293054296,"7,650원",9.8 | ||
| ETF 투자의 모든 것,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=368941145,"18,900원",9.9 | ||
| 비트코인 없는 미래는 없다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=371990345,"27,900원",10.0 | ||
| 다정한 사람이 이긴다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369431565,"17,100원",9.2 | ||
| 소년이 온다,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=40869703,"13,500원",9.6 | ||
| ETS 토익 정기시험 기출문제집 1000 Vol. 4 Reading (리딩),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=330109498,"17,820원",10.0 | ||
| 나 혼자만 레벨업 15 (한정판),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372549881,"51,300원",4.0 | ||
| ETS 토익 정기시험 기출문제집 1000 Vol. 4 Listening (리스닝),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=330109271,"17,820원",10.0 | ||
| 어른의 관계를 가꾸는 100일 필사 노트,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370131831,"18,000원",9.9 | ||
| 우리는 언제나 다시 만나,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=113482584,"10,800원",9.7 | ||
| 편안함의 습격,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=366122829,"19,800원",9.3 | ||
| 여학교의 별 4,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=361704320,"7,650원",9.9 | ||
| 이타미 준 나의 건축,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370845525,"20,700원",9.3 | ||
| 여학교의 별 3,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=316732827,"7,650원",9.9 | ||
| 달러 자산 1억으로 평생 월급 완성하라,https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=369730967,"18,900원",9.7 | ||
| 야구선수 임찬규 (리미티드 에디션),https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=372566693,"19,800원",10.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove notebook-style pip commands (syntax error in .py).
These lines break the script (see Ruff invalid-syntax). Manage dependencies via requirements.txt, not in-code.
Apply this diff:
Optionally add a requirements.txt:
📝 Committable suggestion
🧰 Tools
🪛 Ruff (0.13.1)
1-1: Expected a statement
(invalid-syntax)
1-1: Simple statements must be separated by newlines or semicolons
(invalid-syntax)
1-1: Simple statements must be separated by newlines or semicolons
(invalid-syntax)
2-2: Expected a statement
(invalid-syntax)
2-2: Simple statements must be separated by newlines or semicolons
(invalid-syntax)
2-2: Simple statements must be separated by newlines or semicolons
(invalid-syntax)
3-3: Expected a statement
(invalid-syntax)
3-3: Simple statements must be separated by newlines or semicolons
(invalid-syntax)
3-3: Simple statements must be separated by newlines or semicolons
(invalid-syntax)
4-4: Expected a statement
(invalid-syntax)
4-4: Simple statements must be separated by newlines or semicolons
(invalid-syntax)
4-4: Simple statements must be separated by newlines or semicolons
(invalid-syntax)
🤖 Prompt for AI Agents