์ฐ์ selenium์ด ๋ญํ๋ ๊ฑด์ง ์ผ๋จ ์ ํ์๊ฐ ์๋ค.
selenium์ ์๋ํํ๋ ํ๋ ์ ์์ด๋ผ๊ณ ์ดํดํ๋ฉด ์ฝ๋ค.
๋ง ๊ทธ๋๋ก ์๋ํ๋ง์ ๋ด๋นํ๋ ๊ฒ์ด๋ค.
์๋์ ์ผ๋ก html์ ํ๋ํ๋ ๋ด๊ฐ๋ฉด์ ํ๊ทธ์ ์์ฑ๊ฐ๋ค์ ์ฐพ์์ ์ด๊ฑธ ๊ฐ์ ธ์ค๋ ๋จธ ๊ทธ๋ฐ ๊ท์ฐฎ์ ์ผ๋ค์
๋์ ํด์ฃผ๋ ์ผ๋ค์ ๋ด๋นํ๋ค.
์ ๊ตณ์ด? ์ด๋ ๊ฒ? ๋ผ๊ณ ํ๋ค๋ฉด, ์ฌ์ค ํฌ๋กค๋ง์ด ๋ฑํ ํฉ๋ฒ์ ์ธ ๋๋์ ์๋ ๊ฒ์ด๋ค.
๋ด๊ฐ ์ด๋ค ํ์ด์ง์ ์ฃผ์ธ์ธ๋ฐ ๋๊ฐ ๋ด ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ง ๊ธ์ด๊ฐ๋ฉด ๊ธฐ๋ถ์ด ์ฉ ์ข์ง๋ ์์ ๊ฒ์ด๋ค.
๊ทธ๋์ ๊ฑฐ์ ๋๋ถ๋ถ์ ์ฌ์ดํธ๋ค์ ์ด๋ฐ ๊ฑธ ๋ง์ ๋์๋๋ฐ, ์ ๋ ๋์์ผ๋ก ํ์ฌ๊ธ ๋ง์น ์ฌ์ฉ์๊ฐ ๋ณด๋ ๊ฒ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ธ์ด์ค๊ฒ ํ๋ ๊ฒ์ด๋ค.
๋ฌผ๋ก ๊ฐ์ ์์ดํผ๋ก ๊ณ์ ์ ๊ทผํ๋ฉด ์ด๊ฒ๋ ๋งํ๊ธด ํ๋ค ใ ใ ใ ใ
"๋น์ ์ ๋ก๋ด์ ๋๊น?" ์๋ฐ๊ฑฐ๋ ๊ทธ์ค์ ํ๋
1. ๊ธฐ๋ณธ ์ฌ์ฉ
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
#time sleep ์ ์ฃผ๊ธฐ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
import time
chromedriver = "C:/Users/enliple/Webdriver/chromedriver"
driver = webdriver.Chrome(chromedriver)
#์ด๊ณ ์ถ์ ํ์ด์ง ์ฌ๋ ํจ์
driver.get("http://www.python.org")
#์นํ์ด์ง ์ ๋ชฉ
print(driver.title)
#์นํ์ด์ง url
print(driver.current_url)
#Assertion ์๋ฌ๋ก ํด๋น ๋ด์ฉ์ด ์๋์ง ์๋์ง ํ์ธํ๋ ๊ฑฐ
assert "Python" in driver.title
#์ด๋ฆฐ ํฌ๋กฌ ์ฐฝ ๋ซ๊ธฐ
driver.quit()
์ด๋ ๊ฒ ๋ฃ๊ณ ์คํํ๋ฉด
์ด๋ ๊ฒ ๋์์ผ ์ ์์ด๋ค
2. ์ฝ๊ฐ์ ์์ฉ
- find_element_by_id
- find_element_by_name
- find_element_by_tag_name
- find_element_by_class_name
- find_element_by_css_selector
- find_element_by_xpath
-> html์ ์ฝ๊ฐ ์๋ค๋ฉด ๊ฐ์ด ์ฌ ๊ฒ์ด๋ค. ์ฃผํผํฐ ๋ ธํธ๋ถ์์ driver.find_element_by_id("q") ๋จธ ์ด๋ฐ์์ผ๋ก ๋ณ์์ ๊ฐ๊ฐ ๋ด์ ํ์ธํ๋ ๋ฐฉ์์ผ๋ก ํ์ตํด๋ณด์
xpath๊ฐ ๊ถ๊ธํ ํ ๋ฐ, xpath๋ ์์ฃผ ์์ ์ ์ฐ๋ ๋ฐฉ์์ผ๋ก ์์ฆ์ scrapy์ ์ฐ์ด๋ ๋ฌธ๋ฒ์ธ๋ฐ ๋ฐ๋ก ๋ค๋ค๋ณด๋๋ก ํ๊ณ , ํ์ฌ๋ ๊ทธ๋ฅ ์๋ฐ๊ฒ ์๋ค~ ์ ๋๋ก๋ง ์คํค๋ฐํ๊ณ ๋์ด๊ฐ๋๋ก ํด๋ณด์
์ฌ์ค, ์ด๋ฐ๊ฑด official document ๋ฅผ ํ์ธํด๊ฐ๋ฉฐ ์ฝ์ด๋ณด๋ ์ต๊ด์ ๋ค์ด๋ ๊ฒ์ด ์ค์ํ๋ฏ๋ก ๊น๊ฒ ๋ค๋ฃจ์ง ์๊ฒ ๋ค!
์ฐ๋ฆฌ์ ํ ์คํธ ์นํ์ด์ง๋ฅผ ์ด๊ณ F12๋ฅผ ๋๋ฌ๋ณด์ ๊ทธ๋ฌ๋ฉด ์ฝ๋๊ฐ ๋์ฌํ ๋ฐ
์ด๊ฑธ ๋๋ฅด๊ณ ๊ฒ์์ฐฝ ์์ญ์ ๋๋ฌ๋ณด์ ๊ทธ๋ฌ๋ฉด ํด๋น ์์ญ์ html ์ฝ๋๊ฐ ๋์ฌ ๊ฒ์ด๋ค.
html ์ฝ๋ ์์์ ์ค๋ฅธ์ชฝ ํด๋ฆญ์ ํ๊ณ copy ํญ์์ ์์ฑ๊ณ ๋ฅด๊ธฐ~
๊ฑฐ๊ธฐ์ ํด๋นํ๋ name์ด๋ผ๋ ์ง ๊ธฐํ ๊ฐ๊ณ ์ค๊ณ ์ถ์? ํ ์คํธ ํ๊ณ ์ถ์? ํ๊ทธ ๊ฐ์ ๊ฐ๊ณ ์๋ณด์
#id ๊ฐ์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ
search = driver.find_element_by_id("id-search-field")
#ํด๋น์์ญ ์ด๊ธฐํ
search.clear()
#string๊ฐ ์ ๋ฌ
search.send_keys("python")
#์ํฐ (์ฌ๊ธฐ์ Keys๋ ์ด๋์ ์จ๊ฑฐ๋๋ฉด ์์์ common.keys์์ ์ํฌํธ ํ๊ฑฐ๋ค)
search.send_keys(Keys.RETURN)
#์ฌ๊ธฐ๊น์ง ํ๋ฉด ๋์์ง ํ๋ฉด์ python์ผ๋ก ๊ฒ์๋์ด์ง ๊ฒ์ ํ์ธํ ์ ์์ ๊ฒ์ด๋ค.
time.sleep(2)
#๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ํ๋ฉด css ์์ฑ์ผ๋ก ๊ธ์ด์ค๊ธฐ
data = driver.find_elements_by_css_selector('#content > div > section > form > ul > li > h3 > a')
for item in data:
print(item.text)
1๋ฒ๊ณผ ์ค๋ณต๋ import ๋ถ๋ถ์ ์ฐ์ง ์์์ผ๋ ์ฐธ๊ณ !