[펄 (Perl)] 웹사이트 긁어오기
펄을 이용해서 웹사이트를 긁어오려면 LWP::Simple 모듈을 사용하면 됩니다. 코드는 다음과 같습니다.
#!/usr/bin/perl
use 5.012;
use strict;
use warnings;
use LWP::Simple;
my $url = 'http://www.naver.com';
my $webPage = get($url);
if(defined $webPage)
{
open my $output, '>', 'C:\webpage.html';
print $output $webPage;
close $output;
}
else { say "There's no such website!: $url"; }
이렇게 하면 $url 변수에 지정된 웹사이트의 내용을 문자열로 $webPage로 읽어온 뒤 $output 변수에 연결된 파일로 출력하게 됩니다. 만약 웹사이트 주소가 잘못되었다면 오류 메시지가 출력됩니다.
영문이 아닌 문자가 들어있는 웹사이트를 긁어올 경우 Wide character in print at xxx.pl line xx. 라는 경고 메시지가 출력될 수 있습니다. 이것은 오류가 아니라 경고 메시지이며, 이 경우도 정상적으로 파일로 출력됩니다. 하지만 경고 메시지때문에 뭔가 찜찜하다면 binmode $output, ':utf8'; 이라고 한 줄을 더 넣어주시면 됩니다. 아래 코드에 주석으로 강조해 놓았습니다. 엄밀히 말하자면 웹사이트의 인코딩에 따라 근본 문제는 해결되지 않고 오류 메시지만 안 나타나게 되기도 합니다만, 대부분의 경우에는 문제가 없습니다.
#!/usr/bin/perl
use 5.012;
use strict;
use warnings;
use LWP::Simple;
my $url = 'http://www.naver.com';
my $webPage = get($url);
if(defined $webPage)
{
open my $output, '>', 'C:\webpage.html';
binmode $output, ':utf8'; # 이부분입니다.
print $output $webPage;
close $output;
}
else { say "There's no such website!: $url"; }
'개발, 전산, AI, IT' 카테고리의 다른 글
[리눅스] 특정 디렉토리 내 파일 개수 보기 (0) | 2018.08.13 |
---|---|
[펄 (Perl)] HTML Entity(문자 참조)를 일반 문자로 변환하기 (0) | 2018.08.13 |
[안드로이드] no original dex files found for dex location (0) | 2018.08.02 |
[안드로이드] undefined reference to `cv::imwrite(cv::String const&, cv::_InputArray const&, std::__ndk1::vector<int, std::__ndk1::allocator<int> > const&)' (2) | 2018.07.20 |
[자바] 배열 내용 출력하기 (Arrays.toString()) (0) | 2018.05.31 |