파이썬으로 웹스크랩 프로그램 만들기


회사에서 함께 일하는 기획자들 몇 분과 함께 파이썬 코딩 공부를 한지도 3개월이 되었어요. 어제는 <파이썬 프로그래밍으로 지루한 작업 자동화하기> 라는 책의 11장인 웹 스크랩 부분의 공부를 함께 시작했는데요, requests 모듈과 bs4 모듈을 활용해  특정 웹페이지를 접속한 후 html 파일을 긁어와서 필요한 영역만을 구문분석하는 시도를 해보았어요. 정보수집 업무를 자동화 할때 꼭 필요한 프로그램 이지요.

미션 : 키워드가 ‘카카오’ 인 다음 블로그검색결과 10건의 제목과 URL을 프린트하라

비 개발자들이 파이썬을 활용해서 이런 프로그래밍을 할 수 있을까요? 만약 이런 코드를 짤 수 있다면 약간의 살만 여기에 덧보태면 인터넷상의 정보를 자동으로 긁어와서 필요한 부분을 가공하고 구조화해서 필요한 곳에 활용할 수 있게 되는거지요. 6명이 두개 조로 토론을 하면서 프로젝트 미션 수행을 했는데, 약 40분 정도에 두 그룹 모두 다 주어진 코딩을 마무리 하더라구요. ^^. 두 조가 각각 작성한 결과를 보여드릴께요.

import requests, bs4

res=requests.get('http://search.daum.net/search?w=blog&nil_search=btn&DA=NTB&enc=utf8&q=카카오')

soup=bs4.BeautifulSoup(res.text, 'html.parser')
elems=soup.select('a.f_link_b')

for i in elems:
   print(i.getText()+i.get('href'))

또 다른 구현은 다음과 같아요.

import requests, bs4

res = requests.get('http://search.daum.net/search?w=blog&nil_search=btn&DA=NTB&enc=utf8&q=카카오')

res.raise_for_status()
kakaoblogSoup = bs4.BeautifulSoup(res.text, 'html.parser')
elems = kakaoblogSoup.select('.f_link_b')

for i in elems :
    print(i.getText())
    print(i.get('href'))

BeautifulSoup 객체를 활용해서 select 해 온 코드는 약간씩 달랐지만, 결과물은 둘 다 훌륭하게 만들어집니다. 

위에 확인할 수 있는 것처럼 말이죠. 파이참 도구의 왼쪽 아웃풋 패널에 체크해보면 제목 + URL이 깨끗하게 프린트 되어 있어요. 이 모듈을 살짝 고치면  다양한 검색어에 대해서 상위에 노출되는 블로그 글들에 대한 통계분석까지도 자동으로 가능하게 되지요. 기획자들이 파이썬을 좀더 자유자재로 활용하는 날이 다가오는게 느껴집니다.


댓글 남기기