728x90
๋ฐ์ํ
SMALL
1. ๋์ ? ์ ์ ?
์ฝ๊ฒ ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด
- ์ ์ ํ์ด์ง = html
- ๋์ ํ์ด์ง = ajax
๋!
ํ๊ณ ์ดํด๊ฐ ๋๋ค๋ฉด ์ข๊ฒ ์ง๋ง, ์ดํด๊ฐ ๋์ง ์์ ์ฌ๋๋ค์ ์ํด ๋ง๋ถ์ด์๋ฉด,
html๋ก๋ง ๊ตฌ์ฑ๋ ํ๋ฉด์ ์๋ก๊ณ ์นจํ๋ฉด ํ๋ฉด์ด ๊น๋นก! ๊ฑฐ๋ฆฐ๋ค.
๊ทผ๋ฐ html ์์ ajax๋ก ๊ตฌ์ฑ๋ ๋์ ํ์ด์ง(์๋ฅผ ๋ค์ด ๋๊ธ์ฐฝ)๋ ์๋ก๊ณ ์นจ์ ํ๋คํด์ ๊ทธ ํด๋น ํ์ด์ง๊ฐ ๊น๋นก! ๊ฑฐ๋ฆฌ์ง ์๋๋ค.
์ด ๊น๋นก! ๊ฑฐ๋ฆด๋ ๋จผ๊ฐ ์์ฒญ์ด ์๋ค ๊ฐ๋ค ํ๋๋ฐ, ์ด ๊ณผ์ ์ด ์~๋นํ ์ค๋ ๊ฑธ๋ฆฌ๊ณ ํ์ด ๋ง๋ค.
๊ทธ๋์ ๋๋ถ๋ถ์ ํ์ด์ง๋ค์ ajax๋ก ๊ตฌ์ฑ๋ ๋ถ๋ถ์ ํฌํจํ๊ณ ์๊ณ , ์ฐ๋ฆฌ๊ฐ ํฌ๋กค๋ง ํ ๋ถ๋ถ์ด ์ฌ๊ธฐ์ ํด๋น๋ ์๋ ์๋ค.
๊ทผ๋ฐ, ๊ธฐ์กด ํฌ์คํ ํ ๋ด์ฉ๋๋ก ๊ธฐ์ด selenium ํ์ฉ๋ฒ๋ง์ ์ฌ์ฉํด ํฌ๋กค๋ง์ ์งํํ๋ฉด, ์ด ๋์ ํ์ด์ง๋ ๊ธ์ด์ฌ ์ ์๋ค.
์๋๋ฉด ๊ธฐ์ด ํ์ฉ๋ฒ์ ์ ์ ํ์ด์ง, ์ฆ, html๋ก๋ง ๊ตฌ์ฑ๋ ํ๋ฉด๋ง ํฌ๋กค๋งํ๋ ๋ฐฉ๋ฒ์ด๊ธฐ ๋๋ฌธ!
2. ๋์ ํ์ด์ง ๊ธ์ด์ค๋ ๋ฐฉ๋ฒ ( selenium ์์ฉ)
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium import webdriver
####1. ๋ชจ์
์๋ํ
#์ ์ ํ๊ทธ ๊ฐ์ ธ์ค๊ธฐ
hidden_submenu = driver.find_element_by_css_selector("#cbox_module > div.u_cbox_wrap.u_cbox_ko.u_cbox_type_sort_new > div.u_cbox_paginate > a")
actions = webdriver.ActionChains(driver)
actions.click(hidden_submenu)
#๋น๋ก์ ํด๋ฆญ
actions.perform()
try:
####2. ํ๊ทธ๊ฐ ๋ํ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์ฝ๋ (3์ด)
element = WebDriverWait(driver,3).until(
EC.presence_of_element_located((By.CSS_SELECTOR,"a"))
)
more_button = driver.find_element_by_css_selector("a")
more_button.click()
except TimeoutException:
####3. 3์ด๊ฐ ์ง๋์ ์๋์ค๋ฉด ์งํ๋๋ ์ฝ๋
loop = False
์์ ์ฝ๋์ฒ๋ผ ํฌ๊ฒ 3๊ฐ์ง ๋ฐฉ๋ฒ์ ์์ฉํด์ ์ฝ๋๋ฅผ ์ง๋ฉด ๋๋๋ฐ
3. ๋ค์ด๋ฒ ๋๊ธ ๊ฐ์ ธ์๋ณด๊ธฐ ( selenium ์ค์ )
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time
driver = webdriver.Chrome(chromedriver)
#๋ค์ด๋ฒ ๋๊ธ ๋ง์ ๋ด์ค ๋๊ธ ๋๋ณด๊ธฐํ url
driver.get("https://news.naver.com/main/ranking/read.naver?m_view=1&includeAllCount=true&mode=LSD&mid=shm&sid1=001&oid=020&aid=0003382494&rankingType=RANKING")
loop, count = True, 0
while loop and count < 2:
try:
element = WebDriverWait(driver,5).until(
EC.presence_of_element_located((By.CSS_SELECTOR,'#cbox_module > div.u_cbox_wrap.u_cbox_ko.u_cbox_type_sort_new > div.u_cbox_paginate > a'))
)
more_button = driver.find_element_by_css_selector('#cbox_module > div.u_cbox_wrap.u_cbox_ko.u_cbox_type_sort_new > div.u_cbox_paginate > a')
webdriver.ActionChains(driver).click(more_button).perform()
count += 1
time.sleep(2)
except TimeoutException:
loop = False
#css ํ๋ํ๋ ์ฐพ์๊ฐ๋ฉฐ ์จ์ผํ๋ค. ==> ๋งค์ฐ์ค์
comment_box = driver.find_element_by_css_selector('#cbox_module_wai_u_cbox_content_wrap_tabpanel > ul.u_cbox_list')
comment_list = comment_box.find_elements_by_tag_name('li')
for comment_item in comment_list:
print(comment_item.find_element_by_css_selector('div.u_cbox_comment_box > div.u_cbox_area > div.u_cbox_text_wrap').text)
driver.quit()
ใ .. ์ด์ฉ๋ค๋ณด๋ ์ ์น ๋ด์ค์ง๋ง ๋จธํด๊ฐ์~~~ ํฌ๋กค๋ง์ด ์์~๋์ด๋ฐ!
728x90
๋ฐ์ํ
LIST