무작정 따라하기/조코딩

[조코딩1] 파이썬/ visual studio code/selenium 구글 이미지 크롤링 하기

자바칩 프라푸치노 2020. 11. 6. 22:54

안녕하세요!

2달동안 자바 언어만 배우다 보니 학원 수업은 3개월밖에 안남았고

이렇다할 포트폴리오도 당연히 없어서 너무 조급하고 불안하더라구요ㅜㅜ

그래서 이제 코딩의 코자는 희미하게 알 것 같으니 유튜브에서 예제들을 따라해보려고 해요!

제가 따라해볼 실습은 조코딩님의 수익형 웹, 앱 만들기 입니다.

위 영상을 보고 따라해보았습니다.

 

youtu.be/1b7pXC1-IbE

조코딩님이 설명도 정~~말 잘해주시고 과정도 자세하게 다 알려주시니까 꼭 영상 보고 따라해보시길 추천드립니다.!

그리고 조코딩님은 설명까지 해주시면서 영상은 22분인데요,, 저는 정말 정말 오래걸렸습니다. ㅋ.ㅋ.ㅋ.

총 시간으로 합치면 5시간 정도 걸렸어요.

예상치 못한 오류가 자꾸 나더라구요 ㅠㅠ

아무튼 정리 시작하겠습니다.

 

1. 크롤링이란?

사이트에 있는 정보를 코드를 통해 가져오는 기술

 

2. 필요한 환경

visual studio code

이거는 설치하는 방법 영상을 찾아보시고 깔아주세요

 

3. python venv 가상환경

구글에 저 검색어를 칩니다.

 

그럼 이렇게 뜨는데요 바로 보이는 저 문서를 클릭해줍니다.

 

 

문서 안에 요런 내용이 있습니다.

python3 -m venv /path/to/new/virtual/environment

 

복사해주시구요


이제 vscode로 옵니다.

File -> Open Folder로 자기가 작업할 폴더를 선택해주십니다.

 

그러면 왼쪽에 EXPLORER에 아무것도 없는 저 폴더가 있습니다

 

여기서 Terminal-> New Terminal을 눌러줍니다.

 

그러면 하단에 터미널 부분에 이런 모습이 뜹니다.

저 오른쪽에 1.cmd라고 보이는 부분 있쬬

여기가 처음에 하시면 cmd라고  안뜨고 powershell이라고 뜨는 분이 있을거에요

(저도 그랬거든요....이거때메 몇시간을...)

 

그럴때는

Ctrl + Shift + P 로 명령 팔레트를 열고 

'select default shell'을 검색

'Terminal:Select Default Shell'  선택

'Command Prompt'를 선택

 

해주시면 cmd로 바뀝니다!

그렇게 되었다면 아까 복사한 것을 붙여 넣어주세요( 마우스 우클릭하면 붙여넣어집니다.)

 

python3 -m venv /path/to/new/virtual/environment

여기서

python -m venv selenium 

이라고 수정을 해줍니다.

이 폴더 안쪽에 selenium이라는 가상환경을 설치한다는 뜻입니다. 이 이름은 아무렇게나 지정하셔도 됩니다.

 

그러면 

이렇게 가상환경이 생겼습니다.


4. 가상환경으로 들어가기

 

 

두번째 줄 cd selenium으로 치고 엔터를 치면 세번째 줄이 나옵니다.

이 가상환경으로 들어왔다는 뜻입니다.

 

영상에서는 cd selenium\Scripts를 쳤는데 

저는 저걸로 엔터를 쳐버렸습니다.. 그러면 저 밑에 줄에

cd Scripts라고 치시면 됩니다.

그 다음 activate를 치시면

 

이렇게 앞에 (selenium)이 생겼습니다.

이 가상환경 안에서 지지고 볶고 한다는 뜻인거 같습니다.(영상에 설명 잘 되어있습니다.)

 


여기서 selenium을 설치해줄 것인데요

pip install selenium 을 치면 설치가 됩니다.


5. 크롬 드라이버 설치

 

크롬 드라이버를 설치하기 위해 검색창에

chromedriver이라고 검색을 하고

chromedriver.chromium.org/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

chromedriver.chromium.org

 

여기에 들어가시고

자기의 chrome버전을 알아내서 그것을 다운받아줍니다.

chrome 우측 상단 점 세개 -> 도움말 -> chrome정보 로 가시면 됩니다.

 

저는 86이라서 저거를 클릭하고 다운받았습니다.

 

 

요런게 다운받아지는데요 그러면 이거를 

 

셀레니움 폴더 안에 끌고 와서 넣어줍니다.

그리고 selenium 옆에 new file을 눌러서 google.py를 만들어줍니다.

 


6. 예제 쳐보기

 

구글 검색창에 : 언어이름 + 할일

조코딩님이 강조하시는 것: 코딩은 외우는게 아니다!! 

 

python selenium example이라고 칩니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
 
driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()
cs

이 코드가 예시로 나옵니다.

 

이거를 google.py 파일에 붙여넣어줍니다.

 

처음 하면 하단에 뭐 install하라고 뜨는데 그런거는 다 install눌러줍니다.

 

vscode하단에 이 파란색 부분도 잘 확인해주셔야 합니다. selenium으로 안들어와있으면 빨간줄이 뜨기 때문에 그럴때는 저 파란 부분 클릭하고 제 화면에 보이는 저 텍스트가 나올건데 그걸 클릭해주시면 됩니다.

그리고 우리는 아까 크롬 드라이버를 설치하였으니 코드를 저렇게 고쳐줍니다.

초록색 글씨 부분은 주석인데 Ctrl + / 하시면 주석 처리 됩니다.

 

그리고 terminal 에서

이렇게 쳐주시면 밑에 글자가 나오면서 driver.get에서 입력한 url 화면을 띄웁니다.

저기에 자신이 들어가고 싶은 페이지를 입력해보세요 :)

 

코드를 살펴보시면 위에 from~ 두줄은 아까 설치한 selenium 관련 라이브러리를 불러오는 코드입니다.

그리고 위에서 불러온 webdriver.Chrome()을 이용해서 driver라는 변수에 저장을 해줍니다.

그리고 driver(크롬 드라이버)로 get옆의 주소로 이동을 하게 됩니다.

 


7. 이미지를 찾아서 저장하는 코드치기

(영상을 보시면 자세하게 나옵니다.)

 

 1)구글에서 이미지로 검색할 것이기에 www.google.co.kr/imghp?hl=ko&tab=ri&ogbl 링크를 넣어준다

 2) 구글에서 이미지를 검색할때 검색어를 치고 엔터를 누른다

 3) 작은이미지를 수집하고 큰 이미지를 눌러서 저장한다. ( 찾고자 하는 페이지에서 f12를 눌러서 코드에 어떤 공통점이 있는지 확인하여 그걸로 find한다)

 4) 모든 이미지를 저장하고 싶으면 이미지를 끝까지 스크롤을 내리고 결과 더보기가 있다면 결과 더보기를 누르고 모든 이미지를 불러온 다음에 하나씩 저장을 한다.

 

 

<완성 코드입니다>

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
import os
 
currentPath= os.getcwd()
os.chdir(currentPath)
 
 
driver = webdriver.Chrome()
driver.get("https://www.google.co.kr/imghp?hl=ko&tab=ri&ogbl")
# 검색창 찾기 f12
elem = driver.find_element_by_name("q")
# 검색창에 조코딩이라고 침
elem.send_keys("박보검")
# 엔터키를 침
elem.send_keys(Keys.RETURN)
 
SCROLL_PAUSE_TIME = 1
 
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
 
while True:
    # Scroll down to bottom
    # 브라우저 끝까지 스크롤을 내리겠다.
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
 
    # Wait to load page
    time.sleep(SCROLL_PAUSE_TIME)
 
    # Calculate new scroll height and compare with last scroll height
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        try:
            driver.find_element_by_css_selector(".mye4qd").click()
        except:
            break
    last_height = new_height
 
 
# 작은 이미지 선택하기(첫번쨰)
images = driver.find_elements_by_css_selector(".rg_i.Q4LuWd")
count =1
for image in images:
    try:
        image.click()
        time.sleep(2)
        # 큰이미지 주소 찍음
        imgUrl = driver.find_element_by_xpath('/html/body/div[2]/c-wiz/div[3]/div[2]/div[3]/div/div/div[3]/div[2]/c-wiz/div[1]/div[1]/div/div[2]/a/img').get_attribute("src")
        # 이미지 다운받음
        urllib.request.urlretrieve(imgUrl, "박보검 "+str(count) + ".jpg")
        count = count +1
    except:
        pass
driver.close()
cs

 

이렇게 완성된 코드가 있구요

해당 파일을 실행시켜주면 됩니다.

여러분들은 아시겠지만 저는 파이썬 초짜라서 (진자 생전 첨봅니다ㅠ)

계속 cd selenium 안하고 python google.py 해서 file 과 directory 못찾았다고 오류 떠서 몇시간을 헤맸습니다...

그러면

 

이렇게 박보검 사진 부자가 됐습니다!!

멈추고 싶으면 terminal에서 휴지통 버튼을 누르시구요

사진도 지우고 싶으시면 지우면 됩니다.


끝!!!!!!

이거 제가 영상을 한 5번 넘게 돌려본 것 같아요 ㅠㅠ 처음엔 되게 오래걸렸는데

이 포스팅을 쓰려고 6번째 하다보니 진짜 20분도 안걸리네요,, ㅋㅋ 

영상 보시고 열심히 따라해보세용 ㅎㅎ 화이팅입니다.

 

 

 

 

 

 

 

 

728x90