블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT/Perl 2008.07.04 17:45

[ Perl ] CPAN 모듈 만들기!! #2

 흠... #1 에서 하나 만들고 #2 쓰는 시점에서 또 하나 CPAN 모듈을 추가 했습니다.
 물론 하기 쉬운 것만 샥샥 골라서 했으니까요. :-)

 Perlmani 스터디도 있고해서(하지만 참석은 못하니...)
 심심한 틈을 타서 슬라이드로 만들어 봤습니다.

 사실 이것도 완전한 것도 아니고.. 대~충 CPAN 모듈 만드는 생각에서부터  CPAN Author 가 되기까지의
 간단한 설명을 포함하고 있습니다.

 그리고 StoryQ 라는 국내 Slideshare 같은 서비스를 발견해서요. 그것을 써보겠습니다. :-)

 


 이번 포스팅은 이걸로 때우겠습니다. 저도 CPAN 모듈 만들면서 삑사리 낸거랑, 피드백 받은 것들이
다수 있고... 이것을 정리해서 다음에 또 올리도록 하겠습니다.
 잘하면 이런 서비스를 이용하는 데 맛들일지도 모르겠네요 :-)

신고
IT/Perl 2008.06.24 17:06

[ Perl ] 간단한 웹페이지 스크랩핑 - Web::Scraper

 일반적으로 웹 페이지를 스크래핑할 때 정규표현식에 대한 이해는 필수입니다.
 페이지를 싸그리 통채로 스크랩하는 거야 물론 간단하지만, 페이지의 일부분을 도려내고 싶을 때는 정규표현이 없으면 헤맬 수 밖에 없습니다.

 그리고 정규표현은 가독성이 단점입니다. 어중간한 정규표현이야 괜찮겠지만... 어떤 정규표현을 보고, 이게 뭐하는 것인지 알아내기란 참으로 힘든 일일 겁니다.

 use LWP::Simple;

my $content = get("http://www.daum.net");
my ($title) = $content =~ /<title>(.+)<\/title>/i;

print $title;
 < 어중간하게 쉬운 정규표현의 예 : 웹페이지의 제목 을 얻어내는 스크립트 >

use Web::Scraper;
use URI;
 
my $html = scraper {
  process 'title', title => 'TEXT';
}->scrape(URI->new("http://www.daum.net"));

print $html->{title};
 < 정규표현을 사용하지 않은 예 >

 이런 간단한 예제에서는 Web::Scraper 가 지는 것은 당연하겠죠. :-)
 차이가 있다면 문자코드입니다. 정규표현을 사용한 예제에서는 해당페이지에서 사용하고 있는 문자코드(다음의 경우에는 euc-kr)로 결과가 나오게 되지만, Web::Scraper 를 사용했을 때는 모든 결과는 반드시 UTF-8 으로 반환됩니다.
  늦었지만 이 쯤에서 Web::Scraper 에 대한 자세한 이야기.
  모듈의 저자는 일본의 유명한 Perl Hacker 인 Miyagawa 씨입니다. 전 작년 Shibuya.pm Tech Talk 에서 이 내용을 처음 접하고 꽤나 빠져들었던 기억이 납니다.
  이 모듈의 구성은 Ruby 의 Scrapi 라는 스크래핑 툴에서 차용했다고 합니다.

THIS MODULE IS IN ITS BETA QUALITY. THE API IS STOLEN FROM SCRAPI BUT MAY CHANGE IN THE FUTURE

  라고 Web::Scraper 페이지에 가면 나옵니다. 그리고 어떤 특별한 문서도 없이 Scrapi API 문서를 참조하시면 됩니다.

  아아.. 그러고 보니 이런 설명은 왠지 필요없을 지도...

  Web::Scraper 의 Slide에서 쉽게 볼 수 있습니다. 그쪽의 내용이 직관적이고 여러가지 예제들도 있으니 쉽게 쓸 수 있을 것입니다.

  그러고보니 Firefox 확장으로 WebScraper IDE 라는 것도 있으니, 보다 쉬운 웹 스크래핑이 가능하지 않을까 생각되네요.

  WebScraper IDE (for Firefox3)


  여기까지 보시고도 잘 모르시겠다는 분은 없겠죠?

  혹, 잘 모르시겠다면, 댓글이나 IRC에 들러주셔서 같이 한번 궁리해보았으면 합니다. :-)

  나중에 이를 적용한 예제를 몇가지 올려보도록 하겠습니다.

신고
TOTAL 462,144 TODAY 273

티스토리 툴바