What is the XPath? X Path : ๋ฐ์
๋ด๋ X + Path ํฉ์ณ์ง ํฉ์ฑ์ด ๊ฐ๋ค. X: XML ์ธ๋ฐ, XML์ ๋ฌธ์ ์ข
๋ฅ ์ค ํ๋๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ๋ฐ๋ผ์, XPath๋ XML ๋ฌธ์์ ์์ฑ์ ๊ฒฝ๋ก์์ผ๋ก ์ ๊ทผํ๋ ์ธ์ด์ด๋ค. * beautifulsoup์์๋ ์ง์ํ์ง ์๊ณ ์๋ค. ๊ทธ๋ผ ์ด๊ฑธ ๋์ฒด ์? ๋ฐ๋ก, scrapy ๋๋ฌธ์ ์์๋ฌ์ผํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐฑ์ฅํ ๊ฐ๋จํด๋ฒ์ ๊ตณ๊ตณ =_=b 1. ๊ธฐ์ด ๋ฌธ๋ฒ / : ์ ๋๊ฒฝ๋ก // : ๋ฌธ์ ๋ด ๊ฒ์ //@href : href ์์ฑ์ด ์๋ ๋ชจ๋ ํ๊ทธ ์ ํ //a[@href='abcf'] : a ํ๊ทธ์ href ์์ฑ์ abcf ์์ฑ๊ฐ์ ๊ฐ์ง ๋ชจ๋ ํ๊ทธ ์ ํ (//a)[3] : ์ ์ฒด ๋ฌธ์์ 3๋ฒ์งธ ๋งํฌ ์ ํ (//table)[last()] :์ ์ฒด ํ
์ด๋ธ ๋ฌธ์์ ๋ง..
1. ๋์ ? ์ ์ ? ์ฝ๊ฒ ์ฝ๊ฒ ์ค๋ช
ํ์๋ฉด ์ ์ ํ์ด์ง = html ๋์ ํ์ด์ง = ajax ๋! ํ๊ณ ์ดํด๊ฐ ๋๋ค๋ฉด ์ข๊ฒ ์ง๋ง, ์ดํด๊ฐ ๋์ง ์์ ์ฌ๋๋ค์ ์ํด ๋ง๋ถ์ด์๋ฉด, html๋ก๋ง ๊ตฌ์ฑ๋ ํ๋ฉด์ ์๋ก๊ณ ์นจํ๋ฉด ํ๋ฉด์ด ๊น๋นก! ๊ฑฐ๋ฆฐ๋ค. ๊ทผ๋ฐ html ์์ ajax๋ก ๊ตฌ์ฑ๋ ๋์ ํ์ด์ง(์๋ฅผ ๋ค์ด ๋๊ธ์ฐฝ)๋ ์๋ก๊ณ ์นจ์ ํ๋คํด์ ๊ทธ ํด๋น ํ์ด์ง๊ฐ ๊น๋นก! ๊ฑฐ๋ฆฌ์ง ์๋๋ค. ์ด ๊น๋นก! ๊ฑฐ๋ฆด๋ ๋จผ๊ฐ ์์ฒญ์ด ์๋ค ๊ฐ๋ค ํ๋๋ฐ, ์ด ๊ณผ์ ์ด ์~๋นํ ์ค๋ ๊ฑธ๋ฆฌ๊ณ ํ์ด ๋ง๋ค. ๊ทธ๋์ ๋๋ถ๋ถ์ ํ์ด์ง๋ค์ ajax๋ก ๊ตฌ์ฑ๋ ๋ถ๋ถ์ ํฌํจํ๊ณ ์๊ณ , ์ฐ๋ฆฌ๊ฐ ํฌ๋กค๋ง ํ ๋ถ๋ถ์ด ์ฌ๊ธฐ์ ํด๋น๋ ์๋ ์๋ค. ๊ทผ๋ฐ, ๊ธฐ์กด ํฌ์คํ
ํ ๋ด์ฉ๋๋ก ๊ธฐ์ด selenium ํ์ฉ๋ฒ๋ง์ ์ฌ์ฉํด ํฌ๋กค๋ง์ ์งํํ๋ฉด, ์ด ๋์ ํ์ด์ง๋ ๊ธ์ด์ฌ ์ ์๋ค. ์๋..
What is the Headless Chrome?? - ๋จธ๋ฆฌ ์๋ ํฌ๋กฌ์ด ๋์ฒด ๋ฌด์? ใ
ใ
๊ทธ๋ฅ ์ฐฝ์ด ์๋ ํฌ๋กค๋ง์ด๋ค. ๊ตณ์ด ํ๋ฉด์ ๋์ฐ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ธ์ด์์ ์ ์ฅ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์์ ์๋ PhantomJS๋ผ๋ ๊ฒ์ ์ผ์ง๋ง ์์ฆ์๋ ๊ฐํธํ๊ฒ selenium webdriver์ ์ต์
๊ฐ์ ์ค์ ๊ฐํธํ ๊ตฌํํ ์ ์๋ค. chrome_options = webdriver.ChromeOptions() #์ฐฝ ๋์ฐ์ง ์๋ ์ต์
chrome_options.add_argument('headless') chrome_options.add_argument('window-size=1920x1080') #gpu ์ฌ์ฉํ์ง ์๋ ์ต์
chrome_options.add_argument('disable-gpu') # ์๋ฒ์ ์์ฒญ..
์ฐ์ selenium์ด ๋ญํ๋ ๊ฑด์ง ์ผ๋จ ์ ํ์๊ฐ ์๋ค. selenium์ ์๋ํํ๋ ํ๋ ์ ์์ด๋ผ๊ณ ์ดํดํ๋ฉด ์ฝ๋ค. ๋ง ๊ทธ๋๋ก ์๋ํ๋ง์ ๋ด๋นํ๋ ๊ฒ์ด๋ค. ์๋์ ์ผ๋ก html์ ํ๋ํ๋ ๋ด๊ฐ๋ฉด์ ํ๊ทธ์ ์์ฑ๊ฐ๋ค์ ์ฐพ์์ ์ด๊ฑธ ๊ฐ์ ธ์ค๋ ๋จธ ๊ทธ๋ฐ ๊ท์ฐฎ์ ์ผ๋ค์ ๋์ ํด์ฃผ๋ ์ผ๋ค์ ๋ด๋นํ๋ค. ์ ๊ตณ์ด? ์ด๋ ๊ฒ? ๋ผ๊ณ ํ๋ค๋ฉด, ์ฌ์ค ํฌ๋กค๋ง์ด ๋ฑํ ํฉ๋ฒ์ ์ธ ๋๋์ ์๋ ๊ฒ์ด๋ค. ๋ด๊ฐ ์ด๋ค ํ์ด์ง์ ์ฃผ์ธ์ธ๋ฐ ๋๊ฐ ๋ด ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ง ๊ธ์ด๊ฐ๋ฉด ๊ธฐ๋ถ์ด ์ฉ ์ข์ง๋ ์์ ๊ฒ์ด๋ค. ๊ทธ๋์ ๊ฑฐ์ ๋๋ถ๋ถ์ ์ฌ์ดํธ๋ค์ ์ด๋ฐ ๊ฑธ ๋ง์ ๋์๋๋ฐ, ์
๋ ๋์์ผ๋ก ํ์ฌ๊ธ ๋ง์น ์ฌ์ฉ์๊ฐ ๋ณด๋ ๊ฒ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ธ์ด์ค๊ฒ ํ๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ๊ฐ์ ์์ดํผ๋ก ๊ณ์ ์ ๊ทผํ๋ฉด ์ด๊ฒ๋ ๋งํ๊ธด ํ๋ค ใ
ใ
ใ
ใ
"๋น์ ์ ๋ก๋ด์
๋๊น?" ์๋ฐ๊ฑฐ๋ ๊ทธ์ค์ ..
๋ฐ์ดํฐ ๋ถ์์ ์์ฅฌ ์ด์! ๋ฐ์ดํฐ ์์ง! ํฌ๋กค๋ง์ ์์ํด๋ด์ผ๊ฒ ๋ค VScode๋ก ์ฝ๋ ์
๋ ฅํด๊ฐ๋ฉด์ ๋์ฐ๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง, ์ฌ์ค jupyter notebook์ด ๊ฐํธํ๋ฏ๋ก ์ฌ์ฉํ๋ค. ์ฃผํผํฐ ๋
ธํธ๋ถ ํ๋กฌํํธ์ ์ฌ์ฉํ ๊ฐ์ํ๊ฒฝ์ activate ํด์ฃผ๊ณ 1. Selenium ์ค์น 2. OS ํ๊ฒฝ, chrome ๋ฒ์ ์ ๋ง๋ webdriver ๋ค์ด๋ก๋ https://sites.google.com/a/chromium.org/chromedriver/ ChromeDriver - WebDriver for Chrome WebDriver for Chrome sites.google.com ํฌ๋กฌ ๋ฒ์ ํ์ธ์ ํฌ๋กฌ ํ๋ฉด ์ค๋ฅธ์ชฝ ์๋จ ๋๋ณด๊ธฐ(์ ์ธ๊ฐ) > ๋์๋ง > ํฌ๋กฌ ์ ๋ณด ์์ ํ์ธ๊ฐ๋ฅ ํ์ธ ํ os ์ ๋ง๊ฒ ๋ค์ด ๋ฐ๋๋ฐ, ๋ด ..