Skip to content
리눅스/BSD

TWOA 발표자료입니다.

by 흑엽 posted Sep 23, 2008
080920~21
사단법인 자유 오픈소스 소프트웨어 연합회에서 후원하는
The Way Of Approaching행사에 다녀왔습니다

제작자:히로스에료코_팬-_-v 흑엽
os: 리눅/bsd
필요한 명령어: wget,lynx,iconv(입문자라 모듈대신 명령어로 때웠습니다.)
사용언어: perl
모듈:사용안함(하수인 관계로 아는게 없어서요....)

펄 해커쏜 분들이 없었다면 하룻밤에 못 만들었을 겁니다. 
새벽까지 괴롭혀서 죄송합니다;;; 저의 과도한 질문 ‹š문에 해커쏜 프로젝트가 늦어진거 같네요--;;
하지만 또 그런기회가 있다면 당장갈꺼에요^_^;;; 진님네로ㄱㄱ?

기능:
1.일본드라마 시청자 게시판 게시물 본문만 추출후 저장.
2.추출된 본문을 번역기를 통해 일괄 번역.
3.한국어로 번역된 자료를 검색.
코드 동영상설명

 

1_web_get.pl   게시물을 추출합니다. 
#!/usr/bin/perl

use strict;
use warnings;

for ( 1..43 )
{
`lynx -source http://www.tbs.co.jp/motokare/bbs/h_d10_r$_.html >  $_.html`;
#모토카레 시청자 게시판 내용을 가져오며 파일명을 간결하게 바꿈
}


head  
iconv로 utf8로 문자셋을 변경하며 그에따라 웹페이지도 깨지지 않기 위해 매타태그를 넣어줌
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


make.pl   추출한 웹페이지에서 본문만 남기고 제거합니다.
#!/usr/bin/perl

use strict;
use warnings;

my $fileName = shift( @ARGV );

if( -d $fileName )
  { die "$fileName 은 폴더야.n"; }
-e $fileName || die "$fileName 은 읽을수 없어 허걱.n";
-T $fileName || die "$fileName 은 텍스트 파일이 아니야.n";
open( fileHandle, $fileName ) || die "$fileName 을 못열겠어.n";

# my $Sline = '';
# while(<fileHandle>) {
# chomp; $Sline .= $_;
# }
#느린 읽기 방법

 my @Aline = <fileHandle>; #파일을 한줄로 읽어서 배열에 저장
 close( fileHandle );  # 다 읽었으니 닫습니다. 이제 쓸일없음.

 my $Sline = join('', @Aline); # 배열을 구분기호없이 즉 ''으로 해서
                              # 일반변수에 저장


$Sline =~ s/n//g;   #줄바꿈 제거하여 한줄html을 만듬

$Sline =~ s!<table width="100" height="5" border="0" cellpadding="0" cellspacing="0">                    <tr>                       <td><img src="../img/sq.gif" width="1" height="1"></td>                    </tr>                  </table>                  <table width="340" border="0" cellpadding="0" cellspacing="10" bgcolor="#FFFCF4">                    <tr>                       <td class="f_default_medium">!n$&!g;
#게시물 내용이 들어있는 table 태그의 시작에서 줄바꿈
# s!로 특수 기호를 무력화 한후 /대신 !로 구분을 하며
# $&기호는 그전 !~!사이 범위의 문자열을 말함

$Sline =~ s/d{2}:d{2}:d{2}</font></td>                    </tr>                  </table>/$&n/g;
#게시물과 관련된 table 태그 끝에서 줄바꿈


my $head = `cat ./head`;
print $head; #utf-8로 변환된 일본어를 웹페이지에서 표시하기 위해 매타태그를 출력

@Aline = split( /n/, $Sline);
#줄바꿈으로 구별된 table 태그를 루프로 돌려 검증하기 위해 배열로 저장함.
  foreach my $elem ( 0..$#Aline)
  {
        $_=$Aline[$elem];
       if ( /[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/i )
       {
               print $_."n";#작성시간이 검색되면 게시물로 판단함.
       }
  }



2_make_all.pl   make.pl작업을 반복하여 결과를 한페이지에 합체
#!/usr/bin/perl

use strict;
use warnings;

`rm -rf make.html`; # >> 하기전에 이전파일 삭제
for ( 0..43 )
{
`./make.pl $_.html|iconv -c -f iso-2022-jp -t utf-8  >> make.html`;
}
#네이버 번역기가 일본어를 인식할수 있도록 utf-8로 문자셋 변경


3_korea.sh   합체된 게시물 페이지를 한국어로 번역합니다.
#!/bin/sh

rm -rf korea.html
rm -rf make.html.1 #wget으로 다운로드 해서 생긴 파일 삭제

wget http://j2k.naver.com/j2k.php/korean/http://www.myemy.com/hugyup/test/make.html
cat head > korea.html
iconv -c -f euckr -t utf-8  make.html.1 >> korea.html
#euckr이 아닌 깨지는 문자열로 돌아가며 다시 utf-8로 변환이 되긴함

 
search.sh   table태크로 둘어싸인 게시물 본문이 make.pl에 의해 한줄로 만들어 졌기 때문에 egrep으로 검색이 가능합니다.
#!/bin/sh

rm -rf result.html

cat head > result.html
egrep $1 korea.html >> result.html

00044
  • ?
    ho~~ 2008.09.24 10:59
    1등 ㅋㅋㅋ 열심히 해~
  • ?
    흑엽 2008.09.29 21:33

    도서실에서 열공하시게!ㅋ 노트북 부럽다~~~~~~~~

  • ?
    saillinux 2008.09.24 17:56
    우와 꼼꼼해! '-')< 존경 스럽슴다.
    과연 괜히 아이디가 흑엽이 아니시군요 감격
  • ?
    흑엽 2008.09.29 21:35
    앗....제꺼와 비교할수 없는 간결.막강코드로 OO버를 떨게 만드신! saillinux님ㅋ

Copyright ⓒ 성우 All rights reserved

Powered by SungWoo / Designed by SungWoo

sketchbook5, 스케치북5

sketchbook5, 스케치북5