ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค.
< ๋ค์ ์ํ ์ฌ์ดํธ ์นํฌ๋กค๋ง >
์์ง๋ฐ์ดํฐ
์ํ์ ๋ชฉ, ํ์ , ๋๊ธ
์์ฑํ ๋ฐ์ดํฐ
๊ธ์ /๋ถ์
URL
๋ค์์ํ > ๋ญํน > ๋ฐ์ค์คํผ์ค > ์๊ฐ ์์น์ ๋ฐ์ดํฐ ์์ง
์นํฌ๋กค๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ ์ ์ธ ์นํฌ๋กค๋ง์ ํ ๊ฒฝ์ฐ : BeautifulSoup
: ํ๋์ ํ์ด์ง์ ๋ณด์ด๋ ๋ถ๋ถ๋ง ์์งํ ๋ ์ฌ์ฉ
- ๋์ ์ธ ์นํฌ๋กค๋ง์ ํ ๊ฒฝ์ฐ : selenium
: ํด๋ฆญ๊ณผ ๊ฐ์ ์ด๋ฒคํธ ๋ฑ ํ์ด์ง ์ ํ์ ํ๋ฉด์ ์์งํ ๋ ์ฌ์ฉ
selenium ์ค์น
์ค์น ํ์ : pip install selenium
### ์ค์น ํ์ : pip install selenium
# ๋์ ์นํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
from selenium import webdriver
# ์นํ์ด์ง ๋ด์ ๋ฐ์ดํฐ ์ถ์ถ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
from selenium.webdriver.common.by import By
# ์๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
import time
Daum ํ์ด์ง ์ด๊ธฐ
์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํ๋ฉด ํ์ด์ง๊ฐ ์คํ๋ฉ๋๋ค.
### ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋์ฐ๊ธฐ
# - ๋ธ๋ผ์ฐ์ ์ปจํธ๋กค
driver = webdriver.Chrome()
### url์ ์ด์ฉํ์ฌ ํ์ด์ง ์ ๊ทผ
# - get() : ํ์ด์ง์ ์ ๊ทผ ํ ํด๋น html ์ฝ๋ ์ฝ์ด ๋ค์ด๊ธฐ
# - driver ๊ฐ์ฒด๊ฐ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์
driver.get("https://movie.daum.net/ranking/boxoffice/monthly")
[ํ์ ] ํญ์์ ๋ฆฌ๋ทฐ -> ํผ์น๊ธฐ [๋ ๋ณด๊ธฐ] ์์ด ์งํ
์นํฌ๋กค๋ง ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ ์๋ฃ๋๋ฉด driver ์ข ๋ฃํด์ผ ํฉ๋๋ค. (๊ผญ!!!)
driver.quit()
์ํ ์ ๋ชฉ์ ์์น ์ ์ฅ
- ํฌ๋กฌ๋ธ๋ผ์ฐ์ > F12(๊ฐ๋ฐ์ ๋ชจ๋) > ์ํ ์ ๋ชฉ ๋ง์ฐ์ค ์ฐํด๋ฆญ > [๊ฒ์ฌ] ํด๋ฆญ > a ํ๊ทธ์ ๋ง์ฐ์ค ์์น ํ ์ฐํด๋ฆญ > Copy > Copy selector ํด๋ฆญ
์ํ ํ์ ์ ์์น ์ ์ฅ
- ํฌ๋กฌ๋ธ๋ผ์ฐ์ > F12(๊ฐ๋ฐ์ ๋ชจ๋) > ์ํ ์ ๋ชฉ ๋ง์ฐ์ค ์ฐํด๋ฆญ > [๊ฒ์ฌ] ํด๋ฆญ > a ํ๊ทธ์ ๋ง์ฐ์ค ์์น ํ ์ฐํด๋ฆญ > Copy > Copy selector ํด๋ฆญ
try:
### ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋์ฐ๊ธฐ
# - ๋ธ๋ผ์ฐ์ ์ปจํธ๋กค
driver = webdriver.Chrome()
### url์ ์ด์ฉํ์ฌ ํ์ด์ง ์ ๊ทผ
# - get() : ํ์ด์ง์ ์ ๊ทผ ํ ํด๋น html ์ฝ๋ ์ฝ์ด ๋ค์ด๊ธฐ
# - driver ๊ฐ์ฒด๊ฐ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์
driver.get("https://movie.daum.net/ranking/boxoffice/monthly")
### ์ ๋ชฉ์ด ์๋ ๋ถ๋ถ์ HTML ํ๊ทธ ๊ฒฝ๋ก(ํจ์ค) ์ถ์ถํ๊ธฐ
# - ํฌ๋กฌ๋ธ๋ผ์ฐ์ > F12(๊ฐ๋ฐ์ ๋ชจ๋) > ์ํ ์ ๋ชฉ ๋ง์ฐ์ค ์ฐํด๋ฆญ > [๊ฒ์ฌ] ํด๋ฆญ
# > a ํ๊ทธ์ ๋ง์ฐ์ค ์์น ํ ์ฐํด๋ฆญ > Copy > Copy selector ํด๋ฆญ
# - ํด๋น ์ ๋ชฉ์ ์์น ์ ์ฅ๋จ
### a ํ๊ทธ ์์น ๊ฒฝ๋ก
movie_path = "#mainContent > div > div.box_boxoffice > ol > li > div > div.thumb_cont > strong > a"
#mainContent > div > div.box_boxoffice > ol > li:nth-child(1)(:nth-child(1) ์ญ์ ) > div > div.thumb_cont > strong > a
### ํ์ฌ ํฌ๋กฌ๋ธ๋ผ์ฐ์ ์ ๋ณด์ด๋ ์ํ์ ๋ชฉ ๋ชจ๋ ์ถ์ถํ๊ธฐ
# - find_element() : ํ๊ฑด ์กฐํ, find_elements() : ์ฌ๋ฌ๊ฑด ์กฐํ(๋ฆฌ์คํธ ํ์
์ผ๋ก ๋ฐํ)
# - By.CSS_SELECTOR : CSS ์คํ์ผ ๊ฒฝ๋ก๋ฅผ ์ธ์ํ ์ ์๋๋ก ์ง์
movie_elements = driver.find_elements(By.CSS_SELECTOR, movie_path)
# print(f"movie_elements Length = {len(movie_elements)}")
# print(f"title[0] => {movie_elements[0].text}")
# print(f"title[0] => {movie_elements[1].text}")
# print(f"movie_elements(์ ๋ชฉ) = {movie_elements}")
### -------------------------------
### ์์ง๋ฐ์ดํฐ txt ํ์ผ๋ก ์ ์ฅ์ํค๊ธฐ
f = open("./data/movie_reviews.txt","w",encoding="UTF-8")
### -------------------------------
### ์ ๋ชฉ 10๊ฐ๋ง ์ถ์ถํ๊ธฐ
for i in range(10) :
title = movie_elements[i].text.strip()
print(f"No[{i}] / title[{title}] Start ----------->>>")
### ์ ๋ชฉ์ ํด๋ฆญ์์ผ์ ์์ธ ํ์ด์ง๋ก ์ด๋ํ๊ธฐ
# - ๋ง์ฐ์ค๋ก ์ ๋ชฉ์ ํด๋ฆญํ๋ ํ์์ ๋์ผํ ์ฝ๋
# - click() ์ด๋ฒคํธ ๋ฐ์
movie_elements[i].click()
### ์์ธํ์ด์ง๋ก ์ ๊ทผํ๋ค๋ผ๋ ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ธฐ
# - ์ค์ ์์ธํ์ด์ง์ ์ ๊ทผ
# - window_handles : ํ์ด์ง๊ฐ ์ด๋ฆด๋๋ง๋ค ๋ฆฌ์คํธํ์
์ผ๋ก ์๋์ฐ ์ ๋ณด๋ฅผ ์์๋๋ก ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด
# : -1์ ๋ง์ง๋ง์ ์ ๊ทผํ ํ์ด์ง๋ฅผ ์๋ฏธํจ
movie_handle = driver.window_handles[-1]
# - ์๋ก ์ด๋ฆฐ ํ์ด์ง๋ก ์ ํํ๊ธฐ
driver.switch_to.window(movie_handle)
### ํ์ด์ง ๋ก๋ฉ ๋ฐ ์ฝ๋ ์ฝ์ด๋ค์ด๋ ์๊ฐ์ ๋ฒ์ด์ฃผ๊ธฐ
time.sleep(1)
### --------------------------------
### [ํ์ ] ํญ ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์์ํค๊ธฐ
tab_score_path = "#mainContent > div > div.box_detailinfo > div.tabmenu_wrap > ul > li:nth-child(4) > a"
### aํ๊ทธ ์ ๋ณด ๊ฐ์ง๊ณ ์ค๊ธฐ
tab_score_element = driver.find_element(By.CSS_SELECTOR, tab_score_path)
### [ํ์ ] ํญ, ์ฆ aํ๊ทธ ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์์ํค๊ธฐ
tab_score_element.click()
### [ํ์ ] ํ์ด์ง๋ก ์ ๊ทผํ๋ค๋ผ๋ ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ธฐ
tab_score_handle = driver.window_handles[-1]
# - ์๋ก ์ด๋ฆฐ ํ์ด์ง๋ก ์ ํํ๊ธฐ
driver.switch_to.window(tab_score_handle)
### ํ์ด์ง ๋ก๋ฉ ๋ฐ ์ฝ๋ ์ฝ์ด๋ค์ด๋ ์๊ฐ์ ๋ฒ์ด์ฃผ๊ธฐ
time.sleep(1)
### ------------------------------------
### [ํ์ ] ๋๋ณด๊ธฐ ๋ฒํผ์ ํด๋ฆญํ์ฌ ๋ชจ๋ ํผ์น๊ธฐ
### - ํผ์น ๊ฐฏ์ ํ์ธ ๋ณ์
more_view_cnt = 0
### ๋ชจ๋ ํผ์น๊ธฐ(๋๋ณด๊ธฐ) ์ํ
while True :
try:
movie_view_path = ""
more_view_element = driver.find_element(By.CSS_SELECTOR, more_view path)
more_view_element.click()
### ๋๋ณด๊ธฐ ํด๋ฆญ ํ -> ์ ๊ทผํ๋ค๋ผ๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ
movie_handle = driver.window_handles[-1]
# - ์๋ก ์ด๋ฆฐ ํ์ด์ง๋ก ์ ํํ๊ธฐ
driver.switch_to.window(movie_handle)
### ํ์ด์ง ๋ก๋ฉ ๋ฐ ์ฝ๋ ์ฝ์ด๋ค์ด๋ ์๊ฐ์ ๋ฒ์ด์ฃผ๊ธฐ
time.sleep(1)
### ๋๋ณด๊ธฐ ํด๋ฆญ ํ์ ํ์ธ์ ์ํด 1์ฉ ์ฆ๊ฐ
more_view_cnt += 1
except Exception as e :
### ๋์ด์ ๋๋ณด๊ธฐ ๋ฒํผ์ด ๋ณด์ด์ง ์์ผ๋ฉด ์ค๋ฅ ๋ฐ์
# - ์ค๋ฅ ๋ฐ์ ์์ ์ด ๋๋ณด๊ธฐ ๋ฒํผ์ด ๋๋๋ ์์
break
### ๋๋ณด๊ธฐ ํด๋ฆญํ์ ํ์ธํ๊ธฐ
print(f"๋๋ณด๊ธฐ ํด๋ฆญ ํ์ : [{more_view_cnt]")
### ------------------------
### ๋ชจ๋ ํ์ ๋ฐ์ดํฐ ์ถ์ถํ๊ธฐ
#comment922467050 > div > div.ratings.rating_10
score_path = "ul.list_comment div.ratings"
score_lists = driver.find_elements(By.CSS_SELECTOR, score_path)
# print(f"ํ์ ๊ฐฏ์ : {len(score_lists)}")
### ๋ชจ๋ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ ์ถ์ถํ๊ธฐ
#comment922467050 > div > p
comment_path = "ul.list_comment p.desc_txt"
comment_lists = driver.find_elements(By.CSS_SELECTOR, comment_path)
# print(f"๋ฆฌ๋ทฐ ๊ฐฏ์ : {len(comment_lists)}")
### ----------------------
### ํ์ , ๋ฆฌ๋ทฐ ์ถ์ถํ๊ธฐ
# - ํ์ ์ ์ด์ฉํ์ฌ ๊ธ์ /๋ถ์ ๊ฐ ์์ฑํ๊ธฐ
for j in range(len(score_lists)):
### ํ์ ์ถ์ถํ๊ธฐ
score = score_lists[j].text.strip()
### ๋ฆฌ๋ทฐ ์ถ์ถํ๊ธฐ
comment = comment_lists[j].text.strip().replace("\n", "")
### ํ์ ์ ์ด์ฉํด์ ๊ธ์ /๋ถ์ ๋ฐ์ดํฐ ์์ฑ
# - ๊ธ์ : ํ์ ์ด 8 ์ด์์ธ ๊ฒฝ์ฐ๋ก, ๊ธ์ ๊ฐ์ 1 ์ฌ์ฉ
# - ๋ถ์ : ํ์ ์ด 4 ์ดํ์ธ ๊ฒฝ์ฐ๋ก, ๋ถ์ ๊ฐ์ 0 ์ฌ์ฉ
# - ๊ธฐํ : ๋๋จธ์ง, ๊ธฐํ๊ฐ์ 2 ์ฌ์ฉ
label = 0
if int(score) >= 8 :
label = 1
elif int(score) <= 4 :
label = 0
else :
label = 2
### ๊ฐ ์ํ ๋ณ ํ์ธํ๊ธฐ
print(f"{title} \t{score} \t{comment} \t{label} \n")
### ํ์ผ์ ์ฐ๊ธฐ
f.write(f"{title}\t{score}\t{comment}\t{label}\n")
### -------------------------
### ์ํ ํํธ์ ๋ํ ์ ๋ณด ์์ง์ด ๋๋๋ฉด ๋ค์ ๋ฉ์ธ์ผ๋ก ์ด๋
# - execute_script() : ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ ์ฒ๋ฆฌ ํจ์
driver.execute_script("window.history.go(-2)")
time.sleep(1)
### ์นํฌ๋กค๋ง ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ ์๋ฃ๋๋ฉด driver ์ข
๋ฃํด์ผ ํจ (๊ผญ!!!)
# driver.quit()
except Exception as e :
print(e)
### ํ์ผ ์์ ๋ซ๊ธฐ
f.close()
### ์นํฌ๋กค๋ง ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ ์๋ฃ๋๋ฉด driver ์ข
๋ฃํด์ผ ํจ (๊ผญ!!!)
driver.quit()
finally :
### ํ์ผ ์์ ๋ซ๊ธฐ
f.close()
### ์นํฌ๋กค๋ง ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ ์๋ฃ๋๋ฉด driver ์ข
๋ฃํด์ผ ํจ (๊ผญ!!!)
driver.quit()
[ํ์ ] ํญ์์ ๋ฆฌ๋ทฐ -> ํผ์น๊ธฐ [๋ ๋ณด๊ธฐ] ํด๋ฆญํ์ฌ ์งํ
try:
### ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋์ฐ๊ธฐ
# - ๋ธ๋ผ์ฐ์ ์ปจํธ๋กค
driver = webdriver.Chrome()
### url์ ์ด์ฉํ์ฌ ํ์ด์ง ์ ๊ทผ
# - get() : ํ์ด์ง์ ์ ๊ทผ ํ ํด๋น html ์ฝ๋ ์ฝ์ด ๋ค์ด๊ธฐ
# - driver ๊ฐ์ฒด๊ฐ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์
driver.get("https://movie.daum.net/ranking/boxoffice/monthly")
### ์ ๋ชฉ์ด ์๋ ๋ถ๋ถ์ HTML ํ๊ทธ ๊ฒฝ๋ก(ํจ์ค) ์ถ์ถํ๊ธฐ
# - ํฌ๋กฌ๋ธ๋ผ์ฐ์ > F12(๊ฐ๋ฐ์ ๋ชจ๋) > ์ํ ์ ๋ชฉ ๋ง์ฐ์ค ์ฐํด๋ฆญ > [๊ฒ์ฌ] ํด๋ฆญ
# > a ํ๊ทธ์ ๋ง์ฐ์ค ์์น ํ ์ฐํด๋ฆญ > Copy > Copy selector ํด๋ฆญ
# - ํด๋น ์ ๋ชฉ์ ์์น ์ ์ฅ๋จ
### a ํ๊ทธ ์์น ๊ฒฝ๋ก
movie_path = "#mainContent > div > div.box_boxoffice > ol > li > div > div.thumb_cont > strong > a"
#mainContent > div > div.box_boxoffice > ol > li:nth-child(1)(:nth-child(1) ์ญ์ ) > div > div.thumb_cont > strong > a
### ํ์ฌ ํฌ๋กฌ๋ธ๋ผ์ฐ์ ์ ๋ณด์ด๋ ์ํ์ ๋ชฉ ๋ชจ๋ ์ถ์ถํ๊ธฐ
# - find_element() : ํ๊ฑด ์กฐํ, find_elements() : ์ฌ๋ฌ๊ฑด ์กฐํ(๋ฆฌ์คํธ ํ์
์ผ๋ก ๋ฐํ)
# - By.CSS_SELECTOR : CSS ์คํ์ผ ๊ฒฝ๋ก๋ฅผ ์ธ์ํ ์ ์๋๋ก ์ง์
movie_elements = driver.find_elements(By.CSS_SELECTOR, movie_path)
# print(f"movie_elements Length = {len(movie_elements)}")
# print(f"title[0] => {movie_elements[0].text}")
# print(f"title[0] => {movie_elements[1].text}")
# print(f"movie_elements(์ ๋ชฉ) = {movie_elements}")
### -------------------------
### ์์ง๋ฐ์ดํฐ txt ํ์ผ๋ก ์ ์ฅ์ํค๊ธฐ
f = open("./data/movie_reviews.txt","w",encoding="UTF-8")
### -------------------------------
### ์ ๋ชฉ 10๊ฐ๋ง ์ถ์ถํ๊ธฐ
for i in range(10) :
title = movie_elements[i].text.strip()
print(f"No[{i}] / title[{title}] Start ----------->>>")
### ์ ๋ชฉ์ ํด๋ฆญ์์ผ์ ์์ธ ํ์ด์ง๋ก ์ด๋ํ๊ธฐ
# - ๋ง์ฐ์ค๋ก ์ ๋ชฉ์ ํด๋ฆญํ๋ ํ์์ ๋์ผํ ์ฝ๋
# - click() ์ด๋ฒคํธ ๋ฐ์
movie_elements[i].click()
### ์์ธํ์ด์ง๋ก ์ ๊ทผํ๋ค๋ผ๋ ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ธฐ
# - ์ค์ ์์ธํ์ด์ง์ ์ ๊ทผ
# - window_handles : ํ์ด์ง๊ฐ ์ด๋ฆด๋๋ง๋ค ๋ฆฌ์คํธํ์
์ผ๋ก ์๋์ฐ ์ ๋ณด๋ฅผ ์์๋๋ก ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด
# : -1์ ๋ง์ง๋ง์ ์ ๊ทผํ ํ์ด์ง๋ฅผ ์๋ฏธํจ
movie_handle = driver.window_handles[-1]
# - ์๋ก ์ด๋ฆฐ ํ์ด์ง๋ก ์ ํํ๊ธฐ
driver.switch_to.window(movie_handle)
### ํ์ด์ง ๋ก๋ฉ ๋ฐ ์ฝ๋ ์ฝ์ด๋ค์ด๋ ์๊ฐ์ ๋ฒ์ด์ฃผ๊ธฐ
time.sleep(1)
### --------------------------------
### [ํ์ ] ํญ ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์์ํค๊ธฐ
tab_score_path = "#mainContent > div > div.box_detailinfo > div.tabmenu_wrap > ul > li:nth-child(4) > a"
### aํ๊ทธ ์ ๋ณด ๊ฐ์ง๊ณ ์ค๊ธฐ
tab_score_element = driver.find_element(By.CSS_SELECTOR, tab_score_path)
### [ํ์ ] ํญ, ์ฆ aํ๊ทธ ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์์ํค๊ธฐ
tab_score_element.click()
### [ํ์ ] ํ์ด์ง๋ก ์ ๊ทผํ๋ค๋ผ๋ ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ธฐ
tab_score_handle = driver.window_handles[-1]
# - ์๋ก ์ด๋ฆฐ ํ์ด์ง๋ก ์ ํํ๊ธฐ
driver.switch_to.window(tab_score_handle)
### ํ์ด์ง ๋ก๋ฉ ๋ฐ ์ฝ๋ ์ฝ์ด๋ค์ด๋ ์๊ฐ์ ๋ฒ์ด์ฃผ๊ธฐ
time.sleep(1)
### ------------------------------------
### [ํ์ ] ๋๋ณด๊ธฐ ๋ฒํผ์ ํด๋ฆญํ์ฌ ๋ชจ๋ ํผ์น๊ธฐ
### - ํผ์น ๊ฐฏ์ ํ์ธ ๋ณ์
more_view_cnt = 0
### ๋ชจ๋ ํผ์น๊ธฐ(๋๋ณด๊ธฐ) ์ํ
while True :
try:
more_view_path = "#alex-area button.link_fold"
more_view_element = driver.find_element(By.CSS_SELECTOR , more_view_path)
more_view_element.click()
### ์๋ก ์ด๋ฆฐ ํ์ด์ง ์ ํํ๊ธฐ # ์๋ก ์ด๋ฆฐ ํ์ด์ง ํธ๋ค๋งํด์ ์ง์ ํ๊ธฐ
more_view_handle = driver.window_handles[-1]
driver.switch_to.window(more_view_handle)
time.sleep(1)
# ๋ ๋ณด๊ธฐ ํด๋ฆญ ํ์ ํ์ธ์ ์ํด 1 ์ฉ ์ฆ๊ฐ
more_view_cnt += 1
### ์์๋ก cnt๊ฐฏ์ 2๊ฐ๋ง
if more_view_cnt ==2:
break
except Exception as e:
### ๋ ์ด์ ๋ ๋ณด๊ธฐ ๋ฒํผ์ด ๋ณด์ด์ง ์์ผ๋ฉด ์ค๋ฅ ๋ฐ์
# - ์ค๋ฅ ๋ฐ์ ์์ ์ด ๋ ๋ณด๊ธฐ ๋ฒํผ์ด ๋๋๋ ์์
break
### ๋ ๋ณด๊ธฐ ํด๋ฆญํ์ ํ์ธํ๊ธฐ
print(f'๋ ๋ณด๊ธฐ ํด๋ฆญ ํ์: {more_view_cnt}')
### ------------------------
### ๋ชจ๋ ํ์ ๋ฐ์ดํฐ ์ถ์ถํ๊ธฐ
#comment922467050 > div > div.ratings.rating_10
score_path = "ul.list_comment div.ratings"
score_lists = driver.find_elements(By.CSS_SELECTOR, score_path)
# print(f"ํ์ ๊ฐฏ์ : {len(score_lists)}")
### ๋ชจ๋ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ ์ถ์ถํ๊ธฐ
#comment922467050 > div > p
comment_path = "ul.list_comment p.desc_txt"
comment_lists = driver.find_elements(By.CSS_SELECTOR, comment_path)
# print(f"๋ฆฌ๋ทฐ ๊ฐฏ์ : {len(comment_lists)}")
### ----------------------
### ํ์ , ๋ฆฌ๋ทฐ ์ถ์ถํ๊ธฐ
# - ํ์ ์ ์ด์ฉํ์ฌ ๊ธ์ /๋ถ์ ๊ฐ ์์ฑํ๊ธฐ
### ํ์ ๋๋ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์๊ธฐ์
# - ๋๊ฐ ๋ฆฌ์คํธ์ ๊ฐฏ์ ์ค ์์ ๊ฐ์ ์ฌ์ฉ
# - ํ์ ๋๋ ๋ฆฌ๋ทฐ๊ฐ ์์ผ๋ฉด, ์์ง์์ ์ ์ธ
for_cnt = 0
if len(score_lists) < len(comment_lists) :
for_cnt = len(score_lists)
elif len(score_lists) > len(comment_lists) :
for_cnt = len(comment_lists)
else :
for_cnt = len(score_lists)
for j in range(for_cnt):
### ํ์ ์ถ์ถํ๊ธฐ
score = score_lists[j].text.strip()
### ๋ฆฌ๋ทฐ ์ถ์ถํ๊ธฐ
comment = comment_lists[j].text.strip().replace("\n", "")
### ํ์ ์ ์ด์ฉํด์ ๊ธ์ /๋ถ์ ๋ฐ์ดํฐ ์์ฑ
# - ๊ธ์ : ํ์ ์ด 8 ์ด์์ธ ๊ฒฝ์ฐ๋ก, ๊ธ์ ๊ฐ์ 1 ์ฌ์ฉ
# - ๋ถ์ : ํ์ ์ด 4 ์ดํ์ธ ๊ฒฝ์ฐ๋ก, ๋ถ์ ๊ฐ์ 0 ์ฌ์ฉ
# - ๊ธฐํ : ๋๋จธ์ง, ๊ธฐํ๊ฐ์ 2 ์ฌ์ฉ
label = 0
if int(score) >= 8 :
label = 1
elif int(score) <= 4 :
label = 0
else :
label = 2
### ๊ฐ ์ํ ๋ณ ํ์ธํ๊ธฐ
print(f"{title} \t{score} \t{comment} \t{label} \n")
### ํ์ผ์ ์ฐ๊ธฐ
f.write(f"{title}\t{score}\t{comment}\t{label}\n")
### -------------------------
### ์ํ ํํธ์ ๋ํ ์ ๋ณด ์์ง์ด ๋๋๋ฉด ๋ค์ ๋ฉ์ธ์ผ๋ก ์ด๋
# - execute_script() : ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ ์ฒ๋ฆฌ ํจ์
driver.execute_script("window.history.go(-2)")
time.sleep(1)
### ์นํฌ๋กค๋ง ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ ์๋ฃ๋๋ฉด driver ์ข
๋ฃํด์ผ ํจ (๊ผญ!!!)
# driver.quit()
except Exception as e :
print(e)
### ํ์ผ ์์ ๋ซ๊ธฐ
f.close()
### ์นํฌ๋กค๋ง ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ ์๋ฃ๋๋ฉด driver ์ข
๋ฃํด์ผ ํจ (๊ผญ!!!)
driver.quit()
finally :
### ํ์ผ ์์ ๋ซ๊ธฐ
f.close()
### ์นํฌ๋กค๋ง ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ ์๋ฃ๋๋ฉด driver ์ข
๋ฃํด์ผ ํจ (๊ผญ!!!)
driver.quit()