-
파이썬 기초 공부
변수&기초연산
a = 3 # 3을 a에 넣는다
b = a # a를 b에 넣는다
a = a + 1 # a+1을 다시 a에 넣는다num1 = a*b # a*b의 값을 num1이라는 변수에 넣는다
num2 = 99 # 99의 값을 num2이라는 변수에 넣는다# 변수의 이름은 마음대로 지을 수 있음!
# 진짜 "마음대로" 짓는 게 좋을까? var1, var2 이렇게?자료형 _ 숫자, 문자형
name = 'bob' # 변수에는 문자열이 들어갈 수도 있고,
num = 12 # 숫자가 들어갈 수도 있고,is_number = True # True 또는 False -> "Boolean"형이 들어갈 수도 있습니다.
#########
# 그리고 List, Dictionary 도 들어갈 수도 있죠. 그게 뭔지는 아래에서!
자료형 _ 리스트형(Javascript의 배열형과 동일)
a_list = []
a_list.append(1) # 리스트에 값을 넣는다
a_list.append([2,3]) # 리스트에 [2,3]이라는 리스트를 다시 넣는다# a_list의 값은? [1,[2,3]]
# a_list[0]의 값은? 1
# a_list[1]의 값은? [2,3]
# a_list[1][0]의 값은? 2* 0부터가 시작이다!
자료형 _ Dictionary 형 (Javascript의 dictionary형과 동일)
a_dict = {}
a_dict = {'name':'bob','age':21}
a_dict['height'] = 178# a_dict의 값은? {'name':'bob','age':21, 'height':178}
# a_dict['name']의 값은? 'bob'
# a_dict['age']의 값은? 21
# a_dict['height']의 값은? 178자료형 _ Dictionary 형과 List형의 조합
people = [{'name':'bob','age':20},{'name':'carry','age':38}]
# people[0]['name']의 값은? 'bob'
# people[1]['name']의 값은? 'carry'person = {'name':'john','age':7}
people.append(person)# people의 값은? [{'name':'bob','age':20},{'name':'carry','age':38},{'name':'john','age':7}]
# people[2]['name']의 값은? 'john'조건문 _ if/else로 구성
if age > 20:
print('성인입니다') # 조건이 참이면 성인입니다를 출력else:
print('청소년이에요') # 조건이 거짓이면 청소년이에요를 출력is_adult(30)
# 무엇이 출력될까요?반복문
파이썬에서의 반복문은 리스트의 요소들을 하나씩 꺼내쓰는 형태입니다.
즉, 무조건 list와 함께 쓰인다.
fruits = ['사과','배','감','귤']
for fruit in fruits:
print(fruit)# 사과, 배, 감, 귤 하나씩 꺼내어 찍힙니다.
그밖의 내장 함수들 _문자열 자르기
txt = 'sparta@gmail.com'
result = txt.split('@')[1].split('.')[0]
print(result)그밖의 내장 함수들 _문자열 바꾸기
패키지? 라이브러리? →
Python 에서 패키지는 모듈(일종의 기능들 묶음)을 모아 놓은 단위이고, 이런 패키지의 묶음을 라이브러리라고 합니다. 하지만 보통 패키지와 라이브러리는 혼용해서 많이 써요 😄 지금 여기서는 외부 라이브러리를 사용하기 위해서 패키지를 설치합니다.
즉, 여기서는 패키지 설치 = 외부 라이브러리 설치!Windows : File → setting → project interpreter
Mac : Preference → Project Interpreter3. pip(python install package) 사용 - dload 패키지 설치해보기
앱을 설치할 때 앱스토어/플레이스토어를 가듯이, 새로운 프로젝트의 라이브러리를 가상환경(공구함)에 설치하려면 pip 를 이용하게 됩니다.
project interpreter 화면에서 + 버튼을 누르면 아래 창이 뜹니다!
맥은 아래 쪽에, 윈도우는 오른쪽에 있어요. 사진은 맥 버전!
dload는 URL로부터 파일 다운로드를 해주는 패키지입니다. 이 패키지를 이용해서 이미지를 내려받아볼게요!
[코드스니펫] - dload 써보기
import dload dload.save("https://spartacodingclub.kr/static/css/images/ogimage.png")
다른 이름으로 저장도 해볼까요?
import dload dload.save("https://spartacodingclub.kr/static/css/images/ogimage.png", 'sparta.png')
이미지 웹스크롤링하기
- 신문 스크래핑 📰✂️해보셨나요? 신문에서 원하는 기사만 오려서 정보를 추리는 것을 스크래핑이라고 하죠? 웹 스크래핑도 똑같습니다.
웹 스크래핑(web scraping)은 웹 페이지에서 우리가 원하는 부분의 데이터를 수집해오는 것입니다. (한국에서는 같은 작업을 크롤링 crawling 이라는 용어로 혼용해서 씁니다.)
- 구글 검색할 때는 web scraping 으로 검색해야 우리가 배우는 페이지 추출에 대한 결과가 나오니 참고하세요.
참고 Web Scraping(wikipedia) / Web Crawler(wikipedia) Web Scraping vs Web Crawling: What’s the Difference?
파이썬으로 브라우저 제어하기
웹 스크래핑을 하기 위해서는 특정 웹페이지를 구성하는 HTML 정보를 받아와야하는데요! 여러 방법이 있지만 우리는 파이썬으로 크롬 브라우저를 직접 제어하여 웹페이지를 띄우고 HTML을 읽어오도록 하겠습니다
- selenium 패키지를 이용하면 브라우저를 제어할 수 있습니다.
- 우선 패키지를 설치해볼까요? dload 설치할 때와 똑같은 방법으로 하면 됩니다 😎
-
project interpreter 로 접근해서 + 버튼 누르기
ㄴ Windows : file → setting → project interpreter
ㄴ Mac : preference → project interpreter로 접근
-
selenium 검색해서 install 버튼 눌러 설치
-
셀레니움을 사용하기 위해서는 웹드라이버라는 파일도 필요하답니다.
크롬 브라우저를 열어 Settings > About Chrome에서 버전이 85.X이 맞는지 확인해주세요!
[코드스니펫] - 셀레니움 웹드라이버 설치 링크
<https://chromedriver.storage.googleapis.com/index.html?path=85.0.4183.87/>
- 이 링크에서 운영체제에 맞는 파일을 찾아 다운로드 받고, 압축을 풀어서 sparta 폴더로 옮겨주세요.
이제 파이썬으로 브라우저를 제어해보겠습니다!
[코드스니펫] - 셀레니움 시작코드
from selenium import webdriver
driver = webdriver.Chrome('chromedriver')
driver.get("http://www.naver.com")웹 스크래핑 해보기
바로 직접 해보면서 배워보도록 하죠! 다음에서 '아이유'를 검색해 이미지들을 스크래핑해올게요 🙂
[코드스니펫] - 다음검색결과
<https://search.daum.net/search?w=img&nil_search=btn&DA=NTB&enc=utf8&q=%EC%95%84%EC%9D%B4%EC%9C%A0>
패키지 추가 설치하기 (beautifulsoup4)
project interpreter에서 bs4를 검색해 다운로드받아주세요!
크롤링 기본 세팅
[코드스니펫] - 크롤링 기본 세팅
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 = driver.page_source
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
# 이제 코딩을 통해 필요한 부분을 추출하면 된다.
soup = BeautifulSoup(req, 'html.parser')
###################################
# 이제 여기에 코딩을 하면 됩니다!
###################################
driver.quit() # 끝나면 닫아주기select / select_one의 사용법을 익혀봅니다.
이미지 링크 가져와보기!
태그 안의 텍스트를 찍고 싶을 땐 → 태그.text
태그 안의 속성을 찍고 싶을 땐 → 태그['속성']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 = driver.page_source
soup = BeautifulSoup(req, 'html.parser')
thumbnails = soup.select("#imgList > div > a > img")
for thumbnail in thumbnails:
src = thumbnail["src"]
print(src)
driver.quit() # 끝나면 닫아주기beautifulsoup 내 select에 미리 정의된 다른 방법을 알아봅니다
# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')
soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')
# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')항상 정확하지는 않으나, 크롬 개발자도구를 참고할 수도 있습니다.
- 원하는 부분에서 마우스 오른쪽 클릭 → 검사
- 원하는 태그에서 마우스 오른쪽 클릭
- Copy → Copy selector로 선택자를 복사할 수 있음
11) 이미지 저장하기
-
위에서 설치해놓은 dload 파이썬 패키지를 이용해서 이미지를 다운로드 받아봅시다!
-
우선 이미지를 저장할 imgs 폴더를 만들어주세요.
-
각 파일의 이름은 1.jpg, 2.jpg, ... 이런 식으로 저장해줄게요.
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 = driver.page_source
soup = BeautifulSoup(req, 'html.parser')
thumbnails = soup.select("#imgList > div > a > img")
i=1
for thumbnail in thumbnails:
src = thumbnail["src"]
dload.save(src, f'imgs/{i}.jpg')
i+=1
driver.quit() # 끝나면 닫아주기'다양한 분야 공부' 카테고리의 다른 글
파이썬 혼자놀기 패키지_3차시 강의 (0) 2020.10.17 파이썬 혼자놀기 패키지 - 2일차 _ 기사 웹크롤링 (0) 2020.10.11 컴맹을 위한 Go 언어 기초 프로그래밍 기초 강좌 1 - 트랜지스터를 알아보자 (0) 2020.01.03