(์ ์ฒ๊ธฐ๋ฅผ ์ค๋นํ๋ฉด Selenium์ ์น ํ
์คํ
๋๊ตฌ๋ก ๋จผ์ ์ ํ์๋ค. ์ธํด์ ํ๋ฉด์ ์น ํฌ๋กค๋ง์๋ ์ฌ์ฉ๋๋ค๋ ๊ฒ์ ์์๋ค. ์๋๋ฉด Selenium์ด๋ ์ด๋ฆ๋ง ๊ฐ๊ณ ๋ค๋ฅธ๊ฒ์ผ๊น...?)
"Selenium ์
๋ ๋์ ์น ์ดํ๋ฆฌ์ผ์ด์
ํ
์คํธ๋ฅผ ์ํ ํฌํฐ๋ธ ํ๋ ์์ํฌ์ด๋ค."
ํ
์คํฌ ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ํ์ตํ ํ์์์ด ๊ธฐ๋ฅ ํ
์คํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํ ํ๋ ์ด๋ฐฑ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ค.
์๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ๋ค์์ ํ
์คํธ๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ
์คํธ ๋๋ฉ์ธ ํนํ์ธ์ด๋ฅผ ์ ๊ณตํ๋ค.
์ด ํ
์คํธ๋ค์ ์น ๋ธ๋ผ์ฐ์ ์์ ์ํ์ด ๊ฐ๋ฅํ๋ค.
* ํฌํฐ๋ธ ํ๋ ์์ํฌ(PSA-Potable Service Abstraction) : ํ๊ฒฝ์ ๋ณํ์ ๊ด๊ณ์์ด ์ผ๊ด๋ ๋ฐฉ์์ ๊ธฐ์ ๋ก์ ์ ๊ทผ์ ์ ๊ณตํ๋ ค๋ ์ถ์ํ ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค. ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ด๋ถ ๊ตฌํ์ด ๋ฌ๋ผ์ง๋๋ผ๋ ๋์ผํ ์ธํฐํ์ด์ค, ๋์ผํ ๊ตฌ๋์ด ๊ฐ๋ฅํ๊ฒ๋ ์ค๊ณ๋์ด ์์ผ๋ฉฐ ์์กด์ฑ์ ๊ณ ๋ คํ ํ์๊ฐ ์๋ค.
* ํ๋ ์ด๋ฐฑ ๋๊ตฌ: GUI ํ
์คํ
๋๊ตฌ๋ก ์๋ํ๋ GUI ํ
์คํธ ์ง์
* ๋๋ฉ์ธ ํนํ์ธ์ด : ํน์ ํ ๋๋ฉ์ธ์ ์ ์ฉํ๋๋ฐ ํนํ๋ ์ปดํจํฐ ์ธ์ด, (HTML-์นํ์ด์ง ๋ถ์ผ์์ ๋๋ฆฌ์ฐ์, ํ์ ๋ ๋ถ์ผ์์ ์ฌ์ฉ๋๋ ๋จ์ด๋ ์๋ค.)
๋จผ์ Selenium์ ์ค์นํด์ผํ๋ค. Google Colab์์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ์๊ธ์ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
https://chestnutsweetpotato.tistory.com/19
1. Import
import selenium
from selenium import webdriver
2. ๋ถ๋ฌ์ค๊ธฐ(Driver& Web Load(url))
URL = 'https://www.asos.com/women/new-in/new-in-clothing/cat/?cid=2623&nlid=ww|clothing|shop+by+product|new+in'
driver = webdriver.Chrome(executable_path='/User/Download/chromedriver.exe') // ๋๋ผ์ด๋ฒ ๋ก๋ํ์ฌ 'driver'๋ณ์์ ์ ์ฅ
driver.get(url=URL)
3. ์์ ์ฐพ๊ธฐ
์์งํ๋ ค๋ ์์๋ฅผ ์ฐพ์์ง ์ ํ๊ณ , ํด๋น ์์ ์ฝ๋์์ ์ฐํด๋ฆญํ์ฌ (html, Selector, Xpath)๋ฅผ ๋ณต์ฌํ๋ค.
๊ทธ๋ฆฌ๊ณ ์์งํ๋ ค๋ ์์์ ํน์ง์ ์ธ ๊ฒ(class, id, Xpath, selector, html)๋ฑ์ ํ์ฉํด ์ฐพ๋๋ค.
1. ์์งํ๋ ค๋ ์์๊ฐ ํ ๊ฐ ์ผ๋
#class๋ก ์ฐพ๊ธฐ
a_image=driver.find_element_by_class_name('_3TqU78D')
#selector๋ก ์ฐพ๊ธฐ
find_elemenet_css_selector('#product-23767576 > a')
#xpath๋ก ์ฐพ๊ธฐ
find_element_by_xpath('//*[@id="product-23767576"]/')
#id๋ก ์ฐพ๊ธฐ
find_element_by_id() //์์๋ id๊ฐ ์กด์ฌํ์ง ์์.
2. ์์งํ๋ ค๋ ์์๊ฐ ๋ ๊ฐ์ผ๋
์ด๋๋ ์กฐ๊ธ ๋ณต์กํ ์ ์์ง๋ง, ๋ง์ด ์ด๋ ต์ง ์๋ค!
1 - ์์งํ๋ ค๋ ์์์ ๊ณตํต๋ ์ ์ ์ฐพ๋๋ค.
๋ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ธ๊ณ ์๋ <a>์ class๊ฐ '_3TqU78D'๋ก ๋์ผํ๋ค.
from bs4 import BeautifulSoup
html=driver.page_source
soup=BeautifulSoup(html, 'html.parser')
item_img=[]
for i in soup.select('._3TqU78D'): #html ์์ '_3TqU78D' ํด๋์ค๋ค์์
item_img.append('http:'+str(i.find('img')['src']))# img์์๋ฅผ ์ฐพ๊ณ , src์์ฑ๊ฐ์ item_img์ ๋ฃ๋๋ค.
์ถ์ฒ
https://grapevine9700.tistory.com/397
https://jins-dev.tistory.com/entry/Spring-PSAPortable-Service-Abstraction%EC%9D%98-%EA%B0%9C%EB%85%90
https://ko.wikipedia.org/wiki/%EC%85%80%EB%A0%88%EB%8A%84_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)
https://ko.wikipedia.org/wiki/%EB%8F%84%EB%A9%94%EC%9D%B8_%ED%8A%B9%ED%99%94_%EC%96%B8%EC%96%B4