본문 바로가기
Python

[힙한취미코딩] 기초부터

by narang111 2021. 9. 17.

#sparta #스파르타 #힙한취미코딩 #스파르타 후기 #스파르타 강의 #한이음 #크롤링 #웹 스크래핑 #스크래핑 #사진 자동 다운

#자동화

 

파이참은?

- 문서를 쓰기에 최적화된 문서프로그램인 한글, 워드를 쓰는 것처럼 프로그래밍 언어마다 특화된 프로그램이 존재한다. 파이썬의 경우엔 파이참! 

 

파이참에서 file > new project > 내가 만든 폴더명 을 선택하고 python 버전에 3으로 시작하는지 확인한다.

파이썬 2xxx는 안되고 꼭 3이어야 한다.

 

프로젝트를 만들면 venv 폴더가 보인다.

 

연습용으로 new > python file로 hello.py 를 만들어본다.

이렇게 출력확인!

 

문법공부

 

변수, 자료형

first_name = 'narang'

last_name = 'jung'

print(first_name+last_name)

>>narangjung

 

a=4

b=4

print(a+b)

>> 4

 

print(a+first_name) 

이렇게 하면 숫자와 문자는 더할 수 없다는 에러가 나온다. 당연함.

만약 4narang을 하고싶다면

a='4'로 a를 문자로 바꿔주고 더해준다.

이렇게 a, b, first_name ... 과 같이 값을 담아놓는 곳을 변수라고 한다.

변수이름은 짓는 규칙이 있다.

_ 언더바를 넣는다거나, firstName 등 카멜케이스로 짓는 방법도 있다 회사마다 코드 컨벤션이 있다고한다.

 

자료형 조건문 반복문, 기타 라이브러리

 

자료형 - 리스트

a_list = ['딸기', '사과', '배']

b_list = ['민수', '영희', [ '사과', '배']

리스트 안에 리스트가 들어갈 수 있다 인덱스는 0부터 시작하고

b_list[2]는 ['사과', '배'] 이다.

b_list[2][0] 는!!! 사과 이다.

 

값을 추가하고 싶다면 a_list.append('수박')  하면

a_list = a_list = ['딸기', '사과', '배', '수박'] 이 된다

 

자료형 - 딕셔너리

a_dict = {'name' : 'joy', 'age':23}

딕셔너리 자료형은 키-값 쌍을 가진 자료형이다.

a_dict['height'] = 162 로 키-값을 추가할 수도 있다.

a_dict = { 'name' : 'joy', 'age':23, height' : 160 }

 

key에 해당하는 value 값으로 리스트도 들어갈 수 있다.

a_dict['fruits'] = a_list 하면

a_dict = { 'name' : 'joy', 'age':23, height' : 160, 'fruits' : ['딸기', '사과', '배'] }

여기서 '딸기'를 가져오고 싶다면??

a_dict['fruits'][0] 이다.

 

조건문

age = 24

if age > 20 :

    print('성인')

else:

    print('청소년')

 

>> 성인

 

패키지

 

-가상환경이란?

라이브러리를 프로젝트 별로 관리할 수 있도록 폴더를 따로 만들 수 있게 해준다.

virtual enviroment

 

-file>settings>python interpreter

dload 설치

 

dload 사용해보기 - 한 줄만에 사진 다운받기

이렇게 하면 링크의 이미지가 저장이 된다.

다른 이미지 링크를 그대로 넣어서 활용이 가능하다.

 

웹 스크래핑

패키지

- selenium : 브라우저를 제어할 수 있는

- beautifulsoup(bs4)브라우저가 보고 있는 것 중 원하는 것만 가져올 수 있는

 

selenium을 사용하기 위해서는 셀레니움 웹드라이버를 설치해야한다. 각자에게 맞는 버전을 다운받고

hello.py와 같은 깊이에 chromedriver.exe 파일을 위치시킨다. (다운받고 압축풀고 폴더 안에 실행파일!)

 

https://chromedriver.storage.googleapis.com/index.html?path=85.0.4183.87/ 

 

https://chromedriver.storage.googleapis.com/index.html?path=85.0.4183.87/

 

chromedriver.storage.googleapis.com

 

잠깐 재밌는거!

왼쪽 클릭 검사 누르고 문자를 바꾸면 그대로 적용이 돼서 글자가 굿굿으로 바뀐 것을 볼 수 있다.

브라우저는 서버에서 내려준 것을 그대로 그려주는 얘이다.

바뀌는 이유는 이미 받아온 정보들이기 때문에 우리가 바꿀 수 있다.

ㄹ,

 

이렇게 많은 코드 속에서 원하는 곳을 쉽게 찾을 수 있도록 하는 것이 bs4 역할이다.

 

아이유 사진을 다운받는 코드를 작성해보았다.

imgs 폴더는 미리 만들어놓았다

import dload
from bs4 import BeautifulSoup
from selenium import webdriver
import time

# 드라이버로 페이지 띄워주세요
# 띄우는 시간이 걸리니까 쉬어!
driver = webdriver.Chrome('chromedriver') # 웹드라이버 파일의 경로
driver.get("https://search.daum.net/search?w=img&nil_search=btn&DA=NTB&enc=utf8&q=%EC%95%84%EC%9D%B4%EC%9C%A0")
time.sleep(5) # 5초 동안 페이지 로딩 기다리기

# 페이지에서 받아온 것을 req에 저장
req = driver.page_source
# bs4에 넣고
soup = BeautifulSoup(req, 'html.parser')
# 원하는 부분만 가져오겠다. - 썸네일 태그 값들, div에서 규칙찾기
thumbnails = soup.select("#imgList > div > a > img")

i=1
# 썸네일 이미지 링크 값을 반복문으로 가져온다.
# hello.py와 같은 깊이의 imgs 폴더에 저장한다. - dload 사용
for thumbnail in thumbnails:
    src = thumbnail["src"]
    dload.save(src, f'imgs/{i}.jpg') 
    i+=1

# 끝나면 닫아주기
driver.quit()

 

실행 결과는 이렇게!