[Python 스터디] 입문 — 5주차 | 크롤러 만들기

Jiyoung Hwang
Django Girls Seoul | 장고걸스서울
4 min readMar 19, 2017

API 사용 & API 없이 만드는 크롤러 실습

지난 주 파이썬 스터디에서는 그동안 배운 파이썬 개념을 바탕으로 드디어 크롤러 만들기를 해보았습니다!

DOM(Document Object Model) 구조에 대한 설명을 듣고, 개발 환경을 깨끗하게 하기 위해 가상환경을 세팅하고 실습에 들어가…자마자 윈도우 컴퓨터에서 오류가 났습니다. 마침 놀러 왔던 윈도우 사용자 Beege가 도와줘서 문제를 해결할 수 있었죠.

* 윈도우 파워쉘에서 가상환경 설정 등 명령어를 실행할 땐 “Run as Administrator” 옵션으로 시작하거나 `set-executionpolicy remotesigned` 을 입력해서 권한을 변경하고 시작하세요 ;) (StackExchange)

가상환경에 설치되어 있는 모듈을 파일에 저장해두면 한꺼번에 다운로드 받기 수월합니다. 아래의 명령어를 실행해보세요. requirements.txt 파일에서 설치된 모듈을 확인할 수 있습니다.

$ pip freeze > requirements.txt
$ cat requirements.txt

우여곡절 끝에 본격적으로 실습에 들어갔습니다. API를 사용하는 크롤링과 사용하지 않는 크롤링 두 가지를 배워보았는데요!

1. API 사용 — BeautifulSoup을 이용해서 네이버 뉴스 기사 긁어오기
2. API 없이 — xpath를 이용해서 쿠팡의 제품 카테고리 긁어오기

1. API 사용 — BeautifulSoup을 이용해서 네이버 뉴스 기사 긁어오기

먼저 네이버 API 를 사용하려면 네이버 개발자 페이지에서 client id를 신청하고 secret key를 받아와야 합니다. 그리고 코드 안에 아래와 같이 header를 설정해줍니다.

client_id = “…”
client_secret = “…”

request = urllib.request.Request(url)
request.add_header(“X-Naver-Client-Id”,client_id)
request.add_header(“X-Naver-Client-Secret”,client_secret)

BeautifulSoup은 html 문서를 Python이 이해할 수 있는 객체로 만들어주는 고마운 라이브러리입니다. BeautifulSoup 를 이용해 크롤러를 만드는 코드는 아래 링크를 참조하세요.

>> BeautifulSoup 으로 크롤링 하기

2. API 없이 — xpath를 이용해서 쿠팡의 제품 카테고리 긁어오기

그 다음으로는 API 없이 쿠팡을 크롤링 했는데요. 어떤 사이트라도 사이트 url 뒤에 /robots.txt 를 붙여서 크롤링을 금지해놓은 부분을 확인할 수 있습니다.

늘 그렇듯 지난 주 파이썬 스터디도 ‘열혈 학생들의 홍근 선생님 진땀빼기’ 시간이었는데요. 늘 보던 html이 아니라 xml 형식으로 크롤링을 한다는게 생소한데다 문법도 복잡해서 살짝 헤맸더랬죠.

html은 알겠는데 xml은 뭘까, 왜 쓰는걸까, html이랑은 뭐가 다른 걸까. 정규 표현식 같이 생긴 문법은 도대체 무슨 뜻인가, 개발자 도구에서 나오는 소스코드는 페이지 소스보기에서 나오는 소스코드와 왜 다를까 등등… 질문이 쏟아졌지만 역시 홍근 선생님은 친절히 하나하나 설명해주셨습니다. 써보니 문법만 약간 다를 뿐, xml도 클래스, id, 태그와 속성 등으로 크롤링을 해올 수 있더라구요.

벌써 파이썬 스터디도 마무리할 시간이네요! 다음 스터디에는 어떤 분들을 만날지, 무엇을 배울지 기대가 됩니다. 4월에 다시 만나요! :)

--

--