#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()
실행 결과는 이렇게!
'Python' 카테고리의 다른 글
[힙한취미코딩] 회고 (0) | 2021.09.17 |
---|---|
[힙한취미코딩] 내가 많이 쓰는 말 분석하기 (feat. 카톡) (0) | 2021.09.17 |
[힙한취미코딩] 뉴스 스크래핑 with Python (0) | 2021.09.17 |