Beautiful Soup๋ง์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๊ฒ
conda install selenium
pip install selenium
Module Load ๋ฐ ํฌ๋กฌ๋๋ผ์ด๋ฒ ๊ฒฝ๋ก ์ง์
โป Selenium Update๋ก ์ธํด webdriver.Chrome()
ํฌ๋กฌ๋๋ผ์ด๋ฒ ๊ฒฝ๋ก์ง์ ํ์์์ (์ค์น๋ X)
from selenium import webdriver
driver = webdriver.Chrome() # ํฌ๋กฌ ๋๋ผ์ด๋ฒ ๊ฒฝ๋ก ์ง์
driver.get("https://www.naver.com") # get ๋ช
๋ น์ผ๋ก ์ ๊ทผํ๊ณ ์ถ์ ์ฃผ์ ์ง์
driver.quit()
๋ช
๋ น์ด ์ฌ์ฉdriver.quit()
# ํ์ฌ ๋ธ๋ผ์ฐ์ ์ฐฝ ํฌ๊ธฐ
driver.get_window_size()
# ์คํฌ๋กค ๊ฐ๋ฅํ ๋์ด(๊ธธ์ด) # ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์คํ
last_height = driver.execute_script("return document.body.scrollHeight")
last_height
# ํ๋ฉด ์คํฌ๋กค
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# ์คํฌ๋ฆฐ์ท
driver.save_screenshot("./last_height.png")
# ์คํฌ๋กค ์๋จ ์ด๋
driver.execute_script("window.scrollTo(0, 0);")
Selenium ํ๊ทธ ๋ช ๋ น์ด
find_element_by_css_selector => find, select_one
find_elements_by_css_selector => find_all, select
# ํน์ ํ๊ทธ ์ง์ ๊น์ง ์คํฌ๋กค ํ๋ ์ฝ๋
from selenium.webdriver import ActionChains
# some_tag = driver.find_element_by_xpath('//*[@id="paging"]/ul')
some_tag = driver.find_element_by_css_selector("#paging > ul")
action = ActionChains(driver)
action.move_to_element(some_tag).perform()
# ์
๋ ฅ ์ฐฝ์ ๊ธ์ ๋ฃ๊ธฐ
# ํ๋ฉด์ ๋ณด์ด์ง ์์ผ๋ฉด ์
๋ ฅํ ์ ์์ต๋๋ค
some_tag = driver.find_element_by_id("gsc-i-id1")
some_tag.send_keys("data science")
# ๋ธ๋ผ์ฐ์ ์ฐฝ ํฌ๊ธฐ ์กฐ์
# ํ์ฌ ๋ณด์ด๋ ํ๋ฉด์์๋ง ์ก์
์ ์ทจํ ์ ์์ต๋๋ค
driver.set_window_size(1920, 1080)
# ํ๋ฉด ์ต๋ํ
driver.maximize_window()
# ํ๋ฉด ์ต์ํ
driver.minimize_window()
# ์๋ก ์
๋ ฅํ๋ฉด ๋ค์ ์ถ๊ฐ๋ก ๋ถ์
some_tag.send_keys("python")
# ์ด๊ธฐํ ํ ๊ฒ์์ด ์
๋ ฅ
some_tag.clear() # ์ด๊ธฐํ
some_tag.send_keys("python")
Xpath ํ๊ทธ ์ฐพ๋ ๋ฐฉ๋ฒ
//
: ์ต์์*
: ์์ ํ๊ทธ ๊ฒ์ => div form/
: ์์ ํ๊ทธ ๊ฒ์ => div > form'td[2]'
: td ์ค์์ 2๋ฒ์งธ ํ๊ทธ
# xpath
xpath = '//*[@id="___gcse_0"]/div/form/table/tbody/tr/td[2]/button'
some_tag = driver.find_element_by_xpath(xpath).click()
# css_selector
css_selector = "#___gcse_0 > div > form > table > tbody > tr > td:nth-child(2) > button"
some_tag = driver.find_element_by_css_selector(css_selector).click()
# ํ์ฌ ํ๋ฉด์ html ์ฝ๋ ๊ฐ์ ธ์ค๊ธฐ
driver.page_source