080920~21
사단법인 자유 오픈소스 소프트웨어 연합회에서 후원하는
The Way Of Approaching행사에 다녀왔습니다
제작자:히로스에료코_팬-_-v 흑엽
os: 리눅/bsd
필요한 명령어: wget,lynx,iconv(입문자라 모듈대신 명령어로 때웠습니다.)
사용언어: perl
모듈:사용안함(하수인 관계로 아는게 없어서요....)
펄 해커쏜 분들이 없었다면 하룻밤에 못 만들었을 겁니다.
새벽까지 괴롭혀서 죄송합니다;;; 저의 과도한 질문 문에 해커쏜 프로젝트가 늦어진거 같네요--;;
하지만 또 그런기회가 있다면 당장갈꺼에요^_^;;; 진님네로ㄱㄱ?
기능:
1.일본드라마 시청자 게시판 게시물 본문만 추출후 저장.
2.추출된 본문을 번역기를 통해 일괄 번역.
3.한국어로 번역된 자료를 검색.
코드 동영상설명
1_web_get.pl 게시물을 추출합니다.
head iconv로 utf8로 문자셋을 변경하며 그에따라 웹페이지도 깨지지 않기 위해 매타태그를 넣어줌
make.pl 추출한 웹페이지에서 본문만 남기고 제거합니다.
2_make_all.pl make.pl작업을 반복하여 결과를 한페이지에 합체
3_korea.sh 합체된 게시물 페이지를 한국어로 번역합니다.
search.sh table태크로 둘어싸인 게시물 본문이 make.pl에 의해 한줄로 만들어 졌기 때문에 egrep으로 검색이 가능합니다.
사단법인 자유 오픈소스 소프트웨어 연합회에서 후원하는
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`;
#모토카레 시청자 게시판 내용을 가져오며 파일명을 간결하게 바꿈
}
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";#작성시간이 검색되면 게시물로 판단함.
}
}
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로 문자셋 변경
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로 변환이 되긴함
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
rm -rf result.html
cat head > result.html
egrep $1 korea.html >> result.html