본문 바로가기
코딩/파이썬

[파이썬 크롤링] 01 - 개요

by 일호15 2022. 12. 2.

안녕하세요!

파이썬 크롤링 첫번째 시간입니다!

파이썬 크롤링.. 좋아보이긴 하는데 공부하기는 어려운..

 

가볍게 크롤링 활용 예제로 시작할게요!

아래 사진은 제 블로그의 수학 카테고리인데요.

글의 제목들을 긁어오는 영상과 함께 시작해보겠습니다!

 

제목들을 모으려면.. 복사 붙여넣기!?
제목들을 모으려면.. 복사 붙여넣기!?

 

아하 파이썬 크롤링!

 

용어 정리부터 해볼게요.

크롤링(crawling). 기어다닌다는 뜻인데요.

우리가 알고있는 크롤링은, 사실 웹 스크래핑이라는 용어가 더 맞는 것 같아요.

진짜 크롤링은, 사이트 사이사이를 기어다니며 모든 사이트를 찾아내는 작업이거든요.

 

 

1 크롤링

더보기

 

그럼에도 불구하고, 저는 우리에게 친숙한 '크롤링'이라는 용어를 사용하여 설명을 진행하겠습니다. 웹 스크래핑을 설명드린 이유는, 우리가 하는 작업이 웹을 스크랩하는 작업이기 때문이에요.

 

신문 스크랩 뭔지 아시죠? 신문을 보다가, 원하는 정보를 발견하면 종이를 오려서 내 공책에 붙여서 모아놓는 작업인데요. 우리는 신문을 스크랩하듯이, 웹의 조각조각을 스크랩할 것입니다.

 

 

2 주의사항

더보기

 

누군가가 내 작품을 봐준다면 얼마나 뿌듯할까요? 영상을 유튜브에 업로드하고, 소설을 출간하는 등. 그렇게 많은 사람들이 작품을 내놓았고, 그것은 모두 정보화되어 인터넷에 흩날리고 있어요. 정보의 홍수라는 말이 있는데요. 크롤러의 입장에서 우리는 넘쳐나는 정보 중, 우리가 원하는 것을 고르고 골라낼 필요가 생겼습니다. 종류가 워낙 다양한데, 그 많은 모든 것을 원하는건 아니니까요.

 

결국 크롤링은, 남의 정보를 내 입맛대로 가져다 쓰겠다는 행위입니다. 벌써 군침이 싹 도네요. 하지만 주의사항이 있습니다. 로봇 배제 표준(robotx.txt)이라고 하는 것인데요. 크롤링 행위의 오남용을 방지하기 위해, 각 웹사이트마다 규칙을 정해놓았어요. 내 정보를 로봇(컴퓨터)으로 가져가는 건 이해하겠는데, 적당히 해라 이거죠. 우리는 그 선을 넘지 않을 센스를 가지고 있습니다.

 

다행히도, 이 글을 읽는 당신은 걱정 않으셔도 돼요. 당신이 크롤링 초심자라면 남용을 해보는게 목표일 정도로 기본적인 사용법을 배워나가고 있을 것이고, 당신이 크롤링을 좀 한다 하시면 이미 표준을 지키고 계실테니까요.

 

 

3 크롤링

더보기

 

이제야 진실을 말씀드릴게요. 웹 크롤링은 파이썬만 할 줄 안다고 다 되지는 않습니다. 그럼 뭘 더 알아야 하냐? 바로 HTML과 CSS 언어인데요. 그 필요성을 간단히 알아볼게요.

 

우리가 하는 작업은 웹 크롤링이죠. 웹페이지에서 원하는 정보(웹페이지의 구성 요소 일부)를 긁어온다는 뜻입니다. 자~ 그렇다면 웹페이지가 어떻게 구성되어있는지 아는게 먼저겠죠? 구성을 알아야 구성 요소를 가져올 수 있으니까요. 웹페이지는 어떻게 구성되어있느냐? 간단하게 말하면 구조 속성입니다.

 

네이버 메인화면을 떠올려볼게요. 검색창을 보시면, 네모 박스가 있고 테두리가 색칠되어 있네요.

 

무언가가 어떻게 구성되어있다는 것은, 누군가는 그런 구성으로 만들었음을 뜻하는데요. 웹페이지를 만들 때 구조를 잡는 언어가 HTML이고, 속성을 설정하는 언어가 CSS라고 보시면 되겠습니다. 어렸을때 다들 색칠공부 해보셨죠? HTML로 쓰여진 책에 CSS를 덧바르는 작업임을, 그때는 모두가 비밀로 덮었을겁니다.

 

 

4 BeautifulSoup

더보기

 

자 이제 돌고돌아 BeautifulSoup에 대해 알아볼 차례입니다. 저도 처음 크롤링 배울때 뭐가 뭔지 싶었는데, 초심자의 고충을 잘 알기에 파이썬만 안다고 가정하고 설명해볼게요.

 

색칠공부 책으로 비유해볼게요. 책 21페이지에 하얀 강아지가 보이네요. 보인다고 하시면 돼요꼬리만 갈색이군요. 우리는 색깔만으로 그 꼬리 정보를 추출할 것입니다.

 

① requests라는 친구에게 21페이지 정보를 요청하면, 사진을 찍어와요. 사진을 R이라고 할게요.

② R을 BeautifulSoup이 해석해줍니다. 여기 개가 있군!

③ 아쉽게도 BeautifulSoup은 흑백 안경을 끼고있어요. 개의 형체는 봤지만, 갈색 꼬리는 못본거죠.

④ 이제 우리는 BeautifulSoup이 남긴 숙제, 갈색 꼬리 선택만 해주면 되겠습니다.

(이는 이해를 위한 비유입니다. 실제 크롤링 과정에서 사진을 찍어오지는 않지만, 흐름은 이런 느낌!)

 

from bs4 import BeautifulSoup #bs4라는 큰 그릇에 담긴 BeautifulSoup 이라는 친구만 쓸 것입니다.
import requests #사진기사

url = 색칠공부책 21페이지
color = 갈색

R = requests.get(url) #사진요청
B = BeautifulSoup(requests가 찍어온 사진, BeautifulSoup의 흑백안경) #형체파악
tail = B.select_one(color) #속성선택

위 코드는 실제 동작하는 코드는 아니고, 흐름만 구현한 코드입니다. 이 코드의 흐름을 이해하는 것도 만만치는 않을 것 같아요. 하지만 당신은 할 수 있습니다!

 

한발 더 나아가서, 실제 예제코드를 작성해본다면 다음과 같습니다. 제 블로그의 파이썬 개념 카테고리 글 제목들을 따오는 코드입니다. 파이썬으로 복붙하여 실행해보세요! 만약 코드가 동작하지 않는다면, bs4와 requests를 설치해주시면 됩니다!

from bs4 import BeautifulSoup
import requests

url = 'https://dlfgh15.tistory.com/category/%ED%8C%8C%EC%9D%B4%EC%8D%AC%20%EC%B2%AB%EA%B1%B8%EC%9D%8C%3A/a%20%3D%20%27%EA%B0%9C%EB%85%90%27'
selector = 'div.inner span.title'  #HTML과 CSS를 알아야 제목 정보를 고를 수 있다.

R = requests.get(url)
B = BeautifulSoup(R.content, 'html.parser')
titles = B.select(selector)

for title in titles:
	print(title.get_text())

 

 

기어서(crawling) 찾아다닌다. 하나도 놓치지 않겠어!
기어서(crawling) 찾아다닌다. 하나도 놓치지 않겠어!

 

크롤링 초심자의 입장에서 핵심이 되는 흐름은 다 담았습니다.

남은 부분은 하나하나 채워가보도록 하겠습니다!

 

 

다음 글 >> [파이썬 크롤링] 02 - HTML/CSS

반응형

'코딩 > 파이썬' 카테고리의 다른 글

[파이썬 크롤링] 03 - requests  (2) 2023.01.03
[파이썬 크롤링] 02 - HTML/CSS  (0) 2022.12.17
파이썬 딕셔너리  (0) 2021.09.13
파이썬 break, continue  (0) 2021.09.09
파이썬 메서드  (0) 2021.09.06

댓글