기타 지식

파이썬 무료 코딩 강의를 만들었습니다 ! - 웹스크래핑 편 (웹크롤링 X)

안녕하세요!

 

지지난달에 올린 게임 GUI 에 이어서 파이썬 웹스크래핑 편 강의를 만들어서 개붕이들께 신고 드립니다.

지난글 : https://www.dogdrip.net/265614531

 

* 미리 사과드립니다.
재미 없는 글이라 죄송합니다 ㅋㅋ 

 

예전에는 읽게에 연재 했었는데 운영진께서 "읽게인데 왜 읽을 건 없고 볼 것밖에 없냐, 유게로 가라" 고 하셨던 적이 있어서 유게에 연재했다가,
이번에는 그래도 좀 읽을 게 있을 것 같아서 다시 읽게로 왔습니다. 게시판 성격에 맞지 않다면 다시 쫓아보내주십쇼 영자님..


공부 글 보기 싫으신 분은 뒤로 가기를 눌러주세요


-------------------------------

 


이번 주제는 웹 스크래핑(크롤링 아님 주의)을 다뤄봤는데요.

 

1.png

 

혹시 늑대와 일곱 마리 아기 염소 이야기, 기억 하시나요?

 

엄마가 집을 비운 사이 일곱 마리 아기 염소만 남아 있는데 나쁜 늑대가 찾아옵니다.
"나 엄마야, 문 좀 열어줘"
근데 한 아기 염소가 "우리 엄마 목소리는 그렇게 무섭지 않아!" 하면서 문을 열어주지 않지요.

 

다시 찾아온 늑대가 이번에는 예쁜 목소리로
"엄마란다, 문 좀 열어주겠니?"
하자 한 아기 염소가 물어봅니다.

 

"손을 내밀어 보세요"
그러고는 이내 진한 털에 발톱이 날카로운 발을 보고는
"우리 엄마 손은 아주 하얗단 말이에요" 라며 문을 열어주지 않아요.

 

뽀얀 밀가루를 잔뜩 묻히고 다시 나타난 늑대의 발을 보고,
이번에는 염소들이 속아서 문을 열어줬다가 낭패를 당합니다. (결말 스포는 안하겠습니다 ㅋㅋ)

 


자 여기서 늑대는 염소의 집을 뚫기 위해서 3번의 시도를 합니다.

 

1. 엄마라는 거짓말
2. 엄마라는 거짓말 + 예쁜 목소리 
3. 엄마라는 거짓말 + 예쁜 목소리 + 뽀얀 밀가루를 묻힌 발

 

결국 3번째에서 집을 뚫고 말지요.

 

 

서론이 길었는데요,

웹스크래핑은 바로 이러한 과정이 필요합니다.

마치 창과 방패의 싸움처럼, 쉬운 방패라면 그냥 아무 창이나 써도 되겠지만 튼튼한 방패를 뚫기 위해서는 더 날카롭고 정교하며 센 창으로 도전할 필요가 있지요. 그런데 웹 스크래핑에서는 사실  염소와 늑대의 입장이 조금 바뀝니다.


우리가 온순한 아기 늑대가 되고, 대상 서버가 우락부락한 근육질의 덩치 크고 뿔도 달린 엄마 염소가 됩니다.

저 서버를 어떻게든 공략을 해야 해요.

 

2.png

 

3.png

 

 

그러기 위해서 여러 접근 방법이 활용되는데 제 강의에서 위에 있는 늑대의 전략을 순서대로 하나씩 모두 설명을 드립니다.

 

 

아참, 웹 스크래핑과 웹 크롤링은 조금 다릅니다.


웹 크롤링은,
아재(저 포함)들은 아실 텐데 옛날에 '책 책 책 책을 읽읍시다' 라는 프로그램이 있었어요. 여기에서 하이라이트는, 책이 가득한 책장이 있고 옆에 카트가 하나를 두고 게스트에게 1분인가 시간을 줍니다. 그리고 그 시간동안 담을 수 있는 최대한 많은 책을 가져오면 그 책은 모두 게스트 소유가 되는 거에요. ("황금책"에 대한 설명은 논외로 하겠습니다 ^^)

 

4.png

 

이 때 여러분이 게스트라면 어떻게 하시겠어요?

 

아마 이것저것 따지지 않고 모조리 책을 최대한 빨리 담으려고 할겁니다. 이게 웹 크롤링이라고 보시면 되구요.

 

 

5.png

 

반면에 웹 스크래핑은, 시험 전날에 선생님이 하얀 종이를 한 장 주면서 여러분이 어떤 내용이든 필기를 해 오라고 합니다. 그러면 시험 시간에 그 종이 딱 1장은 펼쳐놓고 시험을 칠 수 있는 거에요. 그럼 여러분은 아마도 수업시간에 배운 중요한 내용이나 외우기 어려운 공식, 영어 단어 같은 것들을 참고하기 쉬운 형태로 빼곡히 적겠지요. 이게 바로 웹 스크래핑입니다.

 

 

서로 다르죠?

 

 

다시 말하면 웹 스크래핑은 웹사이트에서 내가 원하는 데이터를 추출해와서 내가 원하는 형태로 가공하는 행위를 말합니다. 

 

예를 들어 네이버 웹툰 페이지에 있는 모든 만화의 제목이나 실시간 순위 1-10 을 가져온다던지,

 

 

 

 

 

쿠팡 같은 쇼핑몰에서 딱 내가 원하는 조건에 맞는 상품만 링크와 함께 가져온다던지 


예제에서는
- 상위 1~5 페이지 내에서
- 리뷰가 100건이 넘고
- 평점이 4.5점이 넘으면서
- Apple 제품은 제외하고
- 광고 상품은 제외한
목록만 가져오도록 실습한답니다.
(절대 Apple 이 싫다거나 한 건 아니고 그냥 연습용일 뿐입니다 ㅎㅎ )

 

 

 

 

이미지를 다운로드 받는 연습도 해보구요. 제가 영화를 굉장히 좋아하는데 어떤 영화를 보면 좋을지 결정장애가 있어서 그냥 최근 5년간 관객 수가 가장 많은 상위 5개 영화에 대해서, 총 25 개 영화 포스터 이미지를 다운받아놓고 그중에 아무거나 선택을 하려 합니다. 이 이미지를 하나 하나 저장하려면 굉장히 많은 시간과 클릭질이 필요하지만 스크래핑 기술을 이용하면 몇 줄 안되는 코드로 파일명도 내가 원하는대로 저장할 수 있게 되지요.

 

 

 

 

 

그리고 어떤 데이터들은 가지고 오고 나서 엑셀로 관리하거나 추가 작업을 해야할 때도 있습니다. 그럴때는 간단하게 csv 형태로 파일을 만들면 바로 엑셀에서 열어볼 수도 있어요. 네이버 금융에서 코스피 시가총액 순위 정보를 모두 가져와보는 실습을 합니다.

 

 

 

 

그런데 이런 사이트들에서는 사람이 아닌 자동화 봇(Bot) 이 정보를 빼가는 것을 썩 달가워하지는 않을수도 있습니다. 무단으로 정보를 사용할 수도 있거니와 계속 페이지를 요청하게 되면 그만큼 서버에 큰 부담을 줄 수도 있거든요. 그래서 서버에서는 페이지를 볼 수 있는 권한을 주지 않거나 접근을 차단하는 등 다양한 방법으로 방어를 합니다.

 

그러나 늘 그렇듯 우리는 길을 찾을 겁니다.

 

 

10.png

 

 

때로는 로그인이 필요하거나 웹페이지에서 어떤 동작을 해야만 내가 원하는 데이터를 가져올 수도 있습니다. 동적으로 움직이는 웹페이지는 Selenium 이라는 웹 테스트 자동화 프레임워크를 이용해서 우리가 직접 브라우저를 자동으로 컨트롤 할 수도 있습니다. 이전의 방법들이 잘 안될때, 그냥 Selenium 으로 하면 웬만하면 해결이 될겁니다.

 

 

가령 구글 무비 페이지에서 인기차트 영화 중 현재 할인중인 영화 정보만 가져오고 싶은데 여기는 사용자가 스크롤을 내려야만 다음 목록이 불러와집니다. 

 

 


또는 네이버 항공권은 내가 원하는 일정을 입력하고 항공권 조회 버튼을 클릭하면 한참동안 로딩을 하고 나서 목록이 나타나기도 하지요.

 

 


Selenium 을 쓸 때도 이런 부분에 대해서는 오류를 줄이기 위해 보다 섬세한 접근이 필요하답니다. 물론 강의에서 모두 알려드립니다.

대충 지금까지 내용을 정리해보면 이렇습니다.

 

 

일단 시도해보고

 

12.1.png

 

 

그래도 안되면

 

12.2.png

 

 

그래도 안되면

 

12.3.png

 

 

그래도 안되면

 

12.4.png

 

 

간단하죠?

 

13.jpg

 

 

 

웹 스크래핑을 배우기 위해서는 사전지식이 필요한데요, 기본적으로 웹에 대해서 이해를 해야하기 때문에 간단히 HTML, XPath 에 대해서 공부하고, 크롬을 활용하기 때문에 크롬 및 개발자도구 이용 방법에 대해서도 설명드립니다. 그리고 스크래핑 과정에 정규식이 필요할 수도 있어서 아주 가볍게 언급합니다. 이 때문에 앞부분에 이론 설명이 조금 길어서 지루할 수 있지만 조금만 지나면 다양한 페이지에 대해 많은 실습이 이루어지므로 조금만 잘 참고 따라와주시면 좋겠습니다.

 

 

14.png

 

많은 내용을 공부하다보니 정리가 안되실 수도 있을까봐 WrapUp 시간을 가지구요, 아무래도 웹스크래핑은 지금까지의 활용편 주제와는 달리 다른 누군가가 만든 사이트를 대상으로 사용하는 기술이기 때문에 반드시 주의해야 하는 점에 대해서도 다시 한번 알려드립니다. 바쁘시거나 핵심만 알고싶다 하시는 분은 이 부분만 봐도 강의 전반적인 내용은 파악 가능합니다.

 

 

 

물론 이번에도 퀴즈를 드리지요.


다음 부동산 매물에서 검색한 결과 정보를 직접 여러분이 스크래핑 해오는 시간을 가져보구요,

 

 

15.png

 

 

마지막으로는 프로젝트를 진행합니다.


프로젝트 주제는 "나만의 가상 비서" 인데요.


제가 매일 아침에 일어나서 날씨를 확인하고, 주요 뉴스 및 IT 분야 뉴스를 읽는 것을 쉽게 해주는 프로그램을 만들겁니다. 하는 김에 1일 1영어 학습을 위해 매일 새로운 영어 회화 지문을 가져오는 것도 함께 해봅니다. 클릭 한 번이면 이 모든 정보들이 제가 원하는 형태로 가져와지는 것이죠.

 

 

16.png

 

 

굉장히 편하겠죠?

링크를 클릭하면 바로 뉴스 기사를 읽을수도 있게 됩니다.
그리고 이번 주제에서 다루지는 않지만 위에서 가져온 데이터를 이메일이나 카톡 등으로 보내면 매일 아침 아주 손쉽게 정보를 얻을 수 있을 겁니다. (이메일 자동화는 다음 활용편, 업무자동화에서 다뤄보겠습니다)

 

 

 


강의 영상은 여기에서 확인하시면 되구요,

 

 

 

 

 

위 내용을 아래 커리큘럼으로 구상하였습니다.


아마 파이썬 기초 문법만 아신다면 아래 내용만 가지고도 충분히 공부를 하실 수 있을거라 생각합니다.

 

[기본기]
(0:00:00) 0.Intro
(0:00:16) 1.소개
(0:02:03) 2.활용편3 소개
(0:07:26) 3.HTML
(0:16:51) 4.XPath
(0:28:12) 5.크롬
(0:31:45) 6.Requests
(0:39:26) 7.정규식 기본 1
(0:50:52) 8.정규식 기본 2
(0:58:56) 9.User Agent
(1:06:40) 10.BeautifulSoup4 기본 1 (네이버 웹툰)
(1:18:37) 11.BeautifulSoup4 기본 2 
(1:28:13) 12.BeautifulSoup4 활용 1-1 (가우스 전자)
(1:39:26) 13.BeautifulSoup4 활용 1-2
(1:47:55) 14.BeautifulSoup4 활용 2-1 (쿠팡)
(2:00:11) 15.BeautifulSoup4 활용 2-2
(2:05:35) 16.BeautifulSoup4 활용 2-3
(2:15:22) 17.BeautifulSoup4 활용 2-4
(2:22:44) 18.BeautifulSoup4 활용 3-1 (다음 이미지)
(2:31:46) 19.BeautifulSoup4 활용 3-2
(2:41:09) 20.CSV 기본 1 (네이버 금융)
(2:49:55) 21.CSV 기본 2
(2:56:21) 22.Selenium 기본 1
(3:07:45) 23.Selenium 기본 2
(3:13:43) 24.Selenium 심화 (네이버 로그인)
(3:21:40) 25.Selenium 활용 1-1 (네이버 항공권)
(3:33:40) 26.Selenium 활용 1-2 
(3:39:15) 27.Selenium 활용 2-1 (구글 무비)
(3:50:17) 28.Selenium 활용 2-2 
(4:00:39) 29.Selenium 활용 2-3 
(4:10:39) 30.Selenium 활용 2-4 
(4:15:24) 31.Headless 크롬
(4:23:38) 32.Wrap Up

 

[퀴즈]
(4:32:21) 33.퀴즈 (다음 부동산)

 

[프로젝트]
(4:43:13) 34.프로젝트
(4:48:49) 35.오늘의 날씨 (네이버 날씨)
(5:02:06) 36.헤드라인 뉴스 (네이버 뉴스)
(5:10:26) 37.IT 일반 뉴스 (네이버 뉴스)
(5:18:22) 38.오늘의 영어회화 (해커스 영어)
(5:27:25) 39.Outro

 

 

 


이 강의는 파이썬 기초 문법을 공부하신 분들을 위한 강의입니다.


그렇기 때문에 파이썬을 할 줄 모르시는 분은 아래 강의를 통해 먼저 공부해주시면 됩니다.

 

(기본편)

 

 

 

 


다양한 사이트에 대해 다양한 실습을 해보려다 보니 내용이 다소 깁니다. 무려 5시간 30분이나 되는데요... 제가 강의 중에 잡소리는 진짜 하나도 하지 않아서 불필요한 시간 낭비는 없을 거라고 자신합니다. ^^;; (라고 믿고 싶습니다. 여러분의 시간은 소중하니까요..)

 

파이썬을 공부하신 분들께, 한 단계 실력을 올리기 위해 작게나마 도움되면 좋겠습니다.

 

긴 글 읽어주셔서 감사합니다!

 

84개의 댓글

@렙 스켈톤T

점프투파이썬 ㄱ

1
2020.08.12
@렙 스켈톤T

기본편 영상만 봐도 기초문법은 충분해요 ㅋ

0

나 이아죠시 첫 강의때부터 보았는디.... 보고서 그 뒤로 아무것도 안해가꼬 지금 기본 문법조차 기억이 잘 안남...흡

0
2020.08.12
@병신만보면짖는개

ㅋㅋㅋㅋㅋㅋ 안돼.... 그럼 다 까먹어 ㅠㅠ

0
2020.08.12

헐 나도코딩이 개붕이였다니, 일단 구독은 해놓은지 오래임...

난 궁금한건 질문하고 바로바로 들어야 속풀리는데 , 강의같은건 뭔가 원하는 답을 들을 수 없어서 답답하드라

비주얼깔아놓고 파이선 공부할라 해도 이런 기능이 있나? 이런건 어떻게하지?

이건 어떻게하는거야? 하고 검색하고 따라하고 하다보면 반나절 사라져버림... 코딩은 나랑 안맞나봐

0
2020.08.12
@Ultragear

온라인 코딩의 맴점이지, 즉문즉답이 안되니까 많이들 답답해하고.. 나름 답변 빨리 해주려고 하는데 컴퓨터 앞에 없을때는 코드 돌려보질 못해서 답 늦을때도 있음 ㅠ

0
2020.08.12

크롤링 심화주제 좀 다뤄주세요

 

1. 프록시 조작

2. asyncio/aiohttp 같은 비동기 접속

3. 개발자도구 켜서 눈으로 보지 않고 오가는 request, response데이터 보는 법

4. scrapy같은 웹스파이더 개념같은거

 

이 주제들은 시중 오라일리 책이나 이런거 봐도 너무 없는거같음요.

0
2020.08.12
@컴터조아

와 능력자 개붕이 ㄷㄷㄷ 저도 위 주제들 공부해보고 기본편 강좌 끝낸 담에 심화편 고려해볼게요

0
2020.08.12

코딩 ㅇㄷ

0
2020.08.12
@딸기찹쌀떡

ㅇㄷ 감사요

0

국비과정에서 배웠던 것들인데 복습해야겠네요. 자료 감사합니다

0
2020.08.12
@반바지소년정수

국비과정은 도움이 많이 되나요? 실습과 프로젝트도 많이 하는지 궁금해요

0
@나코

실습 위주 수업인데 프로젝트는 거의 할 시간이 없습니다

제가 들었던 과정이 배우는 과목이 너무 많아서 그런진 몰라도 후반부 교육은 거의 쫓기다시피 했네요

그래도 기본기 쌓는데에는 도움 많이 된거같습니당

0
2020.08.12
@반바지소년정수

커리큘럼 구성이 꽤 디테일한가보네요 배우는 과목이 아주 많다니 ㄷㄷ 그래도 실습 많이 하며 배운거 써먹어보는 시간이 있으니 좋네요 ㅋㅋ 감사합니다

0

이거 좀 쓸만할듯 ㄱㅅ

0
2020.08.12
@히말라야핑크솔트펌핑치약

해보면 재밌어요 ㅋㅋ 나름 쓸곳도 많답니다

0

ㅇㄷ

0
2020.08.12

항상 크롤링이라고만 용어를 썼었는데 스크래핑이라고 하는구나. 자작 굳.

0
2020.08.12

한번씩 헷갈리는게 있었는데 보고 재정립했음 ㄱㅅㄱㅅ

0
2020.08.12

내가 이런거 마스터 하면 주식 자동 매매 AI 짜는데 ㅋㅋ

내가 수포자다 ㅋㅋ

0
2020.08.12

자바하는 사람이 이거보면 금방 이해 가능한가?

0
2020.08.12

오 찾아서 첨부터 배워야겠다 파이썬으로 GUI 공부 해보고싶음 전자과라 컴공노베이스지만

0
2020.08.12

나중에 봐야지

0
2020.08.12

좋네요 구독함

 

0

아 취미코딩 개붕이인데 네이버에서 자동 긁어오는게 저래서 안되는구나... 좋은 글 보고감

0
2020.08.13

정말 고맙습니다. 점프투파이썬 받아놓고 안보고 있었는데 영상으로 편하게 보고가용

0
2020.08.13

형님 너무 사랑해요 덕분에 파이썬 진짜재밌게 배우고있어여

0
2020.08.14

쓰레드도 안되는 엿같은 언어!! 하지만 사랑한다

0

저도 html로 프로그래밍 할줄알아요 대단하죠?

0

ㅇㄷ

0
2020.08.16

함부러 크롤링해서 긁어갔다간 고소 맞는수가 있어용

참고 하세용

http://m.ddaily.co.kr/m/m_article/?no=151940

0
2020.08.16

뭐야 나도코딩 개붕이었어? 히잌ㅋ 고마워 구독자란다 ㅋ

0

와 진짜 몇년만에 코딩하려니 머리가 안굴러가서 도움 부탁해도 될까여...

0

세상에 나도코딩이 개붕이였다니

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
10419 [기타 지식] [펌-밀리터리] 알박기의 정석 - Fort Drum 9 Intruder 18 17 시간 전
10418 [기타 지식] [펌-밀리터리] 엉클샘의 요술봉 - Bazooka 4 Intruder 9 17 시간 전
10417 [기타 지식] [펌-밀리터리] 멀리서 봐도 비극, 가까이서 봐도 비극 - Graf... 1 Intruder 7 17 시간 전
10416 [기타 지식] [펌-밀리터리] 처음부터 끝까지 엉망진창 - Shinano 2 Intruder 11 17 시간 전
10415 [기타 지식] [펌-밀리터리] 생명 연장과 노인 학대의 사이 - Midway Class... 4 Intruder 14 17 시간 전
10414 [유머] 학생때 봉사활동 중 기억에 남았던 일 6 8한광어 1 21 시간 전
10413 [역사] 백제 수도 하남위례성, 풍납토성 이야기. 6 오향왕족발 7 21 시간 전
10412 [유머] 유격훈련 맞추는 걸그룹 9 우처르 4 1 일 전
10411 [역사] 식문화 이야기 4탄 - 그리스 로마 문명 (2부) 2 아스테라 4 1 일 전
10410 [호러 괴담] [살인자 이야기] 종신형을 선고 받고 4년만에 무죄 판결을 받... 1 그그그그 0 1 일 전
10409 [과학] (의학) 똥을 지린 도쿠가와 이에야스 10 고오오옴 6 1 일 전
10408 [역사] 모범적인 막장 왕조, 남조 유송(劉宋)왕조 이야기. 20 오향왕족발 8 1 일 전
10407 [역사] 식문화 이야기 3탄 - 그리스 로마 문명 (1부) 14 아스테라 6 2 일 전
10406 [과학] (의학) 똥을 치료제로 쓰는 이야기 29 고오오옴 9 2 일 전
10405 [역사] 저주받은 사마씨, 비극의 진(晉)왕조 이야기. 31 오향왕족발 14 2 일 전
10404 [역사] 북한군 6사단의 기동, 한 끗 차이가 낳은 실패 (1) 9 핑그르르 16 3 일 전
10403 [과학] 특수 상대성 이론에 대한 직관적인 설명 9 포트넘앤메이슨 14 3 일 전
10402 [호러 괴담] [살인자 이야기] 남자친구와 결혼하기 위해 그녀가 한 짓. 1 그그그그 3 3 일 전
10401 [역사] 말 한마디가 가져 온 재앙. 염민(冉閔) 이야기. 7 오향왕족발 14 3 일 전
10400 [역사] 식문화 이야기 2탄 - 이집트와 메소포타미아 10 아스테라 9 3 일 전
서버에 요청 중입니다. 잠시만 기다려 주십시오...