๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์›น

Selenium(์…€๋ ˆ๋‹ˆ์›€) ๊ธฐ๋ณธ ๊ฐœ๋…, ๋ฌธ๋ฒ•

728x90

(์ •์ฒ˜๊ธฐ๋ฅผ ์ค€๋น„ํ•˜๋ฉด 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

 

 

728x90