Yahoo! ニュースの HTML ファイルの構造全体の詳細を述べることはできませんが、 少なくとも今回必要な情報が含まれている部分に関しては、 おおよそ以下のようになっているようです。
<html> <head> <!-- --> <title>Yahoo!ニュース - XXXX 新聞 - 隣りの空き地に囲いができた </title> ........ </head> <body marginheight=0 topmargin=0> <center> ........ <!--- CONTENTS_TITLE_TABLE ---> <table border=0 cellpadding=2 cellspacing=0 width=100%> <tr bgcolor="#9999cc"> <td nowrap> <b><font size=+1>社会ニュース</font></b> <small> - 8月10日(木)12時00分</small> </td> ........ <!--- /CONTENTS_TITLE_TABLE ---> <!--br--> <!--- OUTLINE_TABLE ---> <font size=5 class="s130"><b>隣りの空き地に囲いができた</b></font> <br><br> (記事の本文) ... <div align=right> (XXXX 新聞) - 8月10日12時00分更新</div><br> </td></tr> ........ ... <!--- /YBB module ---> <hr width=100% size=0> <small> <a href="http://help.yahoo.co.jp/help/jp/news/">ヘルプ・お問い合わせ </a><br> Copyright (C) 2006 XXXX 新聞社 記事の無断転用を禁じます。<br> Copyright (C) 2006 Yahoo Japan Corporation. All Rights Reserved. <br> </small> </center> </body> </html> ........
今回は、この中から不要な部分を削除して、 必要な情報のみを取り出すことにします。 必要な情報とは、上の中の以下の部分であるとします。
<!--- CONTENTS_TITLE_TABLE --->
の後ろにある
<b><font size=+1>
...
</small>
の部分
<!--- OUTLINE_TABLE --->
の後ろにある記事の本文
<!--- /YBB module --->
の後ろにある
「Copyright (C) 2006 ...」の部分
出力は、必要な部分が見つかったら随時その時点で出力する、 という方法もありますが、 今回は、必要な部分を一旦変数に保存しておいて、 HTML ファイルを全部読み終わった後で出力することにします。 このようにすることで、元の記事内の配置によらない出力を行うこともできますし、 出力の前に必要な部分があるかどうかのチェックなどを 行うこともできるようになります。 全部読み終わると AWK は END ブロックに処理を移しますから、 出力はこの中で行うことにします。