google count

aero의 이미지

google에서 검색어를 넣고 검색하면 상단에
약 몇개의 결과 라고 해당 검색어를 색인하고 있는 페이지의 수를 보여줍니다.
그리고 google의 검색옵션중에
daterange:[from date]-[to date] 의 형식이 있는데
들어가는 날짜 형식은 julian date형식으로 넣어야 합니다.
참고: http://aa.usno.navy.mil/data/docs/JulianDate.html

다음 프로그램은 특정한 기간동안 구글이 검색어에 대해
얼마나 많은 페이지를 인덱싱하였나를 뽑아 내는 프로그램입니다.

뭐 google api를 사용해도 되지만 하루에 1000건으로 제한되어
있고 웹페이지결과를 parsing해서 뽑아낼 수 도 있는 결과를
굳이 api를 통해서 할 필요도 없어보이고 해서 이렇게 만들었습니다.

google은 이런식의 자동화된 대량쿼리를 보낼경우 ip block할 수
도 있다고 약관에 명시되어 있으니 과용하면 block당 할 수 도
있습니다. :) 실제로 User-agent를 perl LWP모듈 그대로
쓰니 fobidden되더군요 그래서 소스에 보시면 아시겠지만
'Mozilla'로 해놨습니다.

사용법은
google_count.pl 20050101 20050201 검색어
형식입니다.

#!/usr/bin/perl
# Usage google_count.pl 20050101 20050201 querystring

use LWP 5.65;
use URI::URL;
use HTTP::Date;
use Time::JulianDay;

my $debug=0;
my $from_date = str2time($ARGV[0]);
my $to_date = str2time($ARGV[1]);
my $query = $ARGV[2];


print "From date:$from_date\n" if $debug;
print localtime($from_date)."\n" if $debug;
print "To date:$to_date\n" if $debug;
print localtime($to_date)."\n" if $debug;

my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) = localtime($from_date);
my $from_julian_date = int local_julian_day($from_date);
print "From julian date:$from_julian_date\n" if $debug;

my($sec2, $min2, $hour2, $mday2, $mon2, $year2, $wday2, $yday2) = localtime($to_date);
my $to_julian_date = int local_julian_day($to_date);
print "To julian date:$to_julian_date\n" if $debug;

my $unencoded_url = 'http://www.google.com/search?hl=ko&num=10&q='
		     .$query.' daterange:'.$from_julian_date."-".$to_julian_date;
my $url = URI::URL->new($unencoded_url);

print "unencoded: " . $unencoded_url ."\n" if $debug;
print "encoded: " . $url->as_string . "\n" if $debug;

my $browser = LWP::UserAgent->new();
my $response = $browser->get($url->as_string, 'User-Agent'=>'Mozilla' );
if($response->is_success)
{
    $res = $response->content;
    print "Response:\n$res\n" if $debug;
    $res =~ m {<b>([0-9,]*?)</b>개}i;
    my $count = $1;
    $count =~ tr/^0-9//cd; 
    print "$ARGV[0] $ARGV[1] $count\n";
}
else
{
    print $response->error_as_HTML if $debug;
}

위 프로그램으로 요즘 이슈가 되는 "독도" 에 대해서
2005 2~3월 달 사이를 하루 간격으로 데이터를 뽑아보면
다음과 같습니다.

20050201 4
20050202 12
20050203 15
20050204 5
20050205 1
20050206 3
20050207 7
20050208 6
20050209 2
20050210 5
20050211 6
20050212 53
20050213 104
20050214 92
20050215 72
20050216 84
20050217 85
20050218 80
20050219 80
20050220 73
20050221 124
20050222 146
20050223 130
20050224 133
20050225 146
20050226 163
20050227 199
20050301 213
20050302 298
20050303 188
20050304 142
20050305 140
20050306 137
20050307 176
20050309 160
20050310 325
20050311 384
20050312 204
20050314 198
20050315 416
20050316 631
20050317 607
20050318 561
20050319 522
20050320 597
20050321 622
20050322 377
20050323 469
20050324 23700
20050325 49700
20050326 47600
20050327 39600
20050328 38900
20050329 68600
20050330 61200

google이 같은 페이지를 얼마간의 간격으로 재인덱싱 하는지는
모르지만 어떤 단어가 이슈화 됨에 따라 google의 해당 단어에
대한 인덱싱수가 같이 증가하는 경향을 볼 수 있습니다.

제가 이 간단한 프로그램을 만든 동기는 google을 통해
특정 키워드에대한 기간별 인덱싱수를 뽑아서 현 사회의
이슈가 무엇인지 트랜드를 분석해볼 수 있지 않을까 하는
생각에 만들어 봤습니다.

Forums: 
ed.netdiver의 이미지

오옷, 멋집니당. 감동의 물결 출렁~ㅠ.ㅠ;
대체 어케 하면 저런 코드가 나올수 있는거죠?ㅠ.ㅠ;
아 머리 리콜받고 싶당...ㅠ.ㅠ;

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

hey의 이미지

qed wrote:
오옷, 멋집니당. 감동의 물결 출렁~ㅠ.ㅠ;
대체 어케 하면 저런 코드가 나올수 있는거죠?ㅠ.ㅠ;
아 머리 리콜받고 싶당...ㅠ.ㅠ;

저.. 머리 리콜이요, 언제까지 되는건가요? 연식이 좀 되어서 .. 근데 거의 안썼어요. 거의 새거예요.


----------------------------
May the F/OSS be with you..


까나리의 이미지

hey wrote:
qed wrote:
오옷, 멋집니당. 감동의 물결 출렁~ㅠ.ㅠ;
대체 어케 하면 저런 코드가 나올수 있는거죠?ㅠ.ㅠ;
아 머리 리콜받고 싶당...ㅠ.ㅠ;

저.. 머리 리콜이요, 언제까지 되는건가요? 연식이 좀 되어서 .. 근데 거의 안썼어요. 거의 새거예요.

음 전 못질하는데 좀 써서, 쌀꺼에요 ... 네고 왕창 해드립니다.

ed.netdiver의 이미지

일단 중고시세는 대강 알아보셨으리라 생각합니다.
저도 알아봤는데 거의 똥값이더군요.
더구나 a/s기간도 지나서 설령 리콜한대도 유상일 가능성이 높습니다.
무엇보다 요청이 쇄도해서 언제 돌아올지 알수 없사오니,
cold sleep시켜두시길 권고드립니다.^O^//
(같이 자야징.ㅠ.ㅠ;)

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

lifthrasiir의 이미지

오호, 괜찮은 아이디어네요. :) (SugarCube 플러그인이나 만들까;)

- 토끼군

doodoo의 이미지

hey wrote:
qed wrote:
오옷, 멋집니당. 감동의 물결 출렁~ㅠ.ㅠ;
대체 어케 하면 저런 코드가 나올수 있는거죠?ㅠ.ㅠ;
아 머리 리콜받고 싶당...ㅠ.ㅠ;

저.. 머리 리콜이요, 언제까지 되는건가요? 연식이 좀 되어서 .. 근데 거의 안썼어요. 거의 새거예요.

헉...거의 새 거 인가요? :P

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.