dload ํจํค์ง ์ค์น
dload๋ ์ด๋ฏธ์ง ๋ค์ด๋ก๋๋ฅผ ์ฝ๊ฒ ๋์์ฃผ๋ ํจํค์ง์ด๋ค.
File > Settings > Python Interpreter
์ค๋ฅธ์ชฝ์ + ๋ฒํผ ๋๋ฌ์ dload ๊ฒ์
import dload
dload.save("์ด๋ฏธ์ง ์ฃผ์")
๊ตฌ๊ธ์์ ์๋ฌด ์ด๋ฏธ์ง๋ ๊ฒ์ํด์ '์ด๋ฏธ์ง ์ฃผ์ ๋ณต์ฌ'ํด์ ๋งํฌ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋๋ค.
์ ๋ ๋์ ์ค์น
์ ๋ ๋์์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋์ผ๋ก ์ ์ดํด์ฃผ๋ ํจํค์ง์ด๋ค.
File > Settings > Python Interpreter
seleninum ๊ฒ์ > Install Package
์ ๋ ๋์ ์น๋๋ผ์ด๋ฒ ์ค์น
ํฌ๋กฌ ๋ธ๋ผ์ฐ์ > ๋์๋ง > Chrome ์ ๋ณด > ํฌ๋กฌ ๋ฒ์ ํ์ธ
์ ๋ ๋์ ์น๋๋ผ์ด๋ฒ ์ค์น ๋งํฌ๋ก ๊ณ ๊ณ
chromedriver.storage.googleapis.com/index.html?path=85.0.4183.87/
์๊ธฐ ํฌ๋กฌ ๋ฒ์ ์ ๋ง๊ฒ ์ค์น!
(85๋ฒ์ ์ด ์๋๋ผ๋ฉด Parent Directory๋ค์ด๊ฐ์ ๋ณธ์ธ ๋ฒ์ ์ผ๋ก ์ค์น)
์์ถ์ ํ์ด์ ๋์จ ์คํํ์ผ์ ํ์ด์ฌ ํ๋ก์ ํธ ํด๋๋ก ์ฎ๊ฒจ์ค๋ค.
from selenium import webdriver
driver = webdriver.Chrome('chromedriver')
driver.get("http://www.naver.com")
์ด ์ฝ๋๋ฅผ ์คํ์ํค๋ฉด, ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์ ์ฐฝ์ผ๋ก naver๊ฐ ๋ฌ๋ค!
์น ์คํฌ๋ํ(์น ํฌ๋กค๋ง)ํ๊ธฐ
Beautifulsoup๋ ๋ธ๋ผ์ฐ์ ์ ์์ค์ฝ๋ ์ค์์ ๋ด๊ฐ ์ํ๋ ๊ฒ์ ์์๋ด์ฃผ๋ ํจํค์ง์ด๋ค.
์ค์น๋ฐฉ๋ฒ์ ์์ ๋์ผํ๋ค.
File > Settings > Python Interpreter > bs4 > Install Package
๋ค์ด๋ฒ์ ์ํ๋ ๋จ์ด๋ฅผ ์ด๋ฏธ์ง๊ฒ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ ํฌ๋กค๋งํ ์ด๋ฏธ์ง ์ค ํ๋๋ฅผ ์ค๋ฅธ์ชฝ ํด๋ฆญ > ๊ฒ์ฌ > Copy > Copy selector
โ ์ฃผ์ํ ์ ์ img src ์ฃผ์๊ฐ ์๋ ํ๊ทธ ๋ถ๋ถ์ copyํด์ผ ํ๋ค๋ ๊ฒ!
from bs4 import BeautifulSoup
from selenium import webdriver
import time
driver = webdriver.Chrome('chromedriver') # ์น๋๋ผ์ด๋ฒ ํ์ผ ๊ฒฝ๋ก
driver.get("https://search.naver.com/search.naver?where=image&sm=tab_jum&query=%ED%83%9C%EB%AF%BC") # ์ด๋ฏธ์ง ๊ฒ์ URL
time.sleep(5) # 5์ด ๋์ ํ์ด์ง ๋ก๋ฉ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ํ์ด์ฌ์ ์ฐ๋ค.
req = driver.page_source
# HTML์ BeautifulSoup์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด ๊ฒ์ํ๊ธฐ ์ฉ์ดํ ์ํ๋ก ๋ง๋ฆ
# soup์ด๋ผ๋ ๋ณ์์ "ํ์ฑ ์ฉ์ดํด์ง html"์ด ๋ด๊ธด ์ํ๊ฐ ๋จ
# ์ด์ ์ฝ๋ฉ์ ํตํด ํ์ํ ๋ถ๋ถ์ ์ถ์ถํ๋ฉด ๋๋ค.
soup = BeautifulSoup(req, 'html.parser')
# ์๊น ๋ณต์ฌํ Selector๋ฅผ ๋ฃ์ด์ค๋ค.
thumnails = soup.select_one('#_sau_imageTab > div.photowall._photoGridWrapper > div.photo_grid._box > div:nth-child(2) > a.thumb._thumb > img')
print(thumnails['src'])
driver.quit() # ๋๋๋ฉด ๋ซ์์ฃผ๊ธฐ
๊ทธ๋ฌ๋ฉด ์ด๋ฏธ์ง์ src ์ฃผ์๋ง ์ถ๋ ฅ์ด ๋๋ค.
์ด์ ๋ชจ๋ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ํฌ๋กค๋งํด์ ์ ์ฅํด๋ณด์๐จ
์ด๋ฏธ์ง๋ค์ selector๋ฅผ ์์ธํ ๋ณด๋ค๋ณด๋ฉด, div:nth-child๋ฑ ์ผ์ ํ ๊ท์น๋ค์ด ์๋ ๊ฑธ ์ ์ ์๋ค.
์ด ๋ถ๋ถ์ ์ง์์ฃผ๊ฑฐ๋ ์ ๋ฆฌํด์ soup.select์ ๋ฃ์ด์ค๋ค.
soup.select_one๋ฅผ ์ฐ๋ฉด ํด๋น html ํ๊ทธ ์ค ํ๋๋ง ์ ํํ๊ณ ,
soup.select๋ ํด๋นํ๋ ๋ชจ๋ html ํ๊ทธ๋ฅผ ์ ํํ๋ค.
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import dload
driver = webdriver.Chrome('chromedriver') # ์น๋๋ผ์ด๋ฒ ํ์ผ ๊ฒฝ๋ก
driver.get("https://search.naver.com/search.naver?where=image&sm=tab_jum&query=%ED%83%9C%EB%AF%BC") # ์ด๋ฏธ์ง ๊ฒ์ URL
time.sleep(5) # 5์ด ๋์ ํ์ด์ง ๋ก๋ฉ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ํ์ด์ฌ์ ์ฐ๋ค.
req = driver.page_source
# HTML์ BeautifulSoup์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด ๊ฒ์ํ๊ธฐ ์ฉ์ดํ ์ํ๋ก ๋ง๋ฆ
# soup์ด๋ผ๋ ๋ณ์์ "ํ์ฑ ์ฉ์ดํด์ง html"์ด ๋ด๊ธด ์ํ๊ฐ ๋จ
# ์ด์ ์ฝ๋ฉ์ ํตํด ํ์ํ ๋ถ๋ถ์ ์ถ์ถํ๋ฉด ๋๋ค.
soup = BeautifulSoup(req, 'html.parser')
thumnails = soup.select('#_sau_imageTab > div.photowall._photoGridWrapper > div > div > a.thumb._thumb > img')
i = 1
for thumnail in thumnails:
img = thumnail['src']
print(img)
dload.save(img, f'img/{i}.jpg')
i += 1
driver.quit() # ๋๋๋ฉด ๋ซ์์ฃผ๊ธฐ
๋ค์ด๋ฒ๋ '#_sau_imageTab > div.photowall._photoGridWrapper > div > div > a.thumb._thumb > img'
๋ค์์ '#imgList > div > a > img'
์ด๋ฐ์์ผ๋ก soup.select์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
โ ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ imgํด๋๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ผ ํ๋ค๋ ๊ฒโผ ์๊ทธ๋ฌ๋ฉด ์ค๋ฅ ๋์ฐธ์ฌ๊ฐ ๋๋ค.
์ง ! ๊ทธ๋ผ ์ด๋ ๊ฒ ํฌ๋กค๋ง์ด ์๋ฃ๋๋ค๐
'Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ธฐ์ฌ ์น์คํฌ๋ํ(ํฌ๋กค๋ง)ํด์ ์ด๋ฉ์ผ ๋ณด๋ด๊ธฐ (1) | 2020.10.13 |
---|---|
์นด์นด์คํก ์๋ํด๋ผ์ฐ๋ ๋ง๋ค๊ธฐ (0) | 2020.10.13 |