BEGIN{ topurl = "http://headlines.yahoo.co.jp/hl" if(field == "") field = "soci" awk="awk" ### (1) 先頭のページを取得 fname = sprintf("%s-%03d.html",field,1) url = sprintf("%s?c=%s&t=l",topurl,field) cmd = sprintf("wget -O %s \"%s\"",fname,url) system(cmd) ### (2) pages を取得 pages = getpages(fname) for(j=1;j<pages;j++){ ### (3) 2 ページ目以降を取得 fname = sprintf("%s-%03d.html",field,j+1) url = sprintf("%s?c=%s&t=l&p=%d",topurl,field,j) cmd = sprintf("wget -O %s \"%s\"",fname,url) system(cmd) } ### (4) [field]-lst1.html を作成 cmd = sprintf("%s -f yahoo2.awk",awk) for(j=1;j<=pages;j++) cmd = sprintf("%s %s-%03d.html",cmd,field,j) cmd = sprintf("%s > %s-lst1.html",cmd,field) system(cmd) ### (5) [field]-lst2.html を作成 cmd = sprintf("%s -f yahoo3-%s.awk -f yahoo3.awk",awk,field) cmd = sprintf("%s %s-lst1.html > %s-lst2.html",cmd,field,field) system(cmd) } ##### pages の取得 ##### function getpages(fname, pages) { pages = 0 while (getline < fname){ if($0 ~ /^[1-9][0-9]*\/[1-9]/){ match($0,/\/[1-9][0-9]*/) pages = substr($0,RSTART+1,RLENGTH-1)+0 break } } close(fname) return pages }
ページの取得は getpages() という関数にしてあります。 全体の流れはそう難しくはないと思います。