次へ: 4 目標となる行の取り出し 上へ: AWK による HTML ファイルの整形 前へ: 2 HTML のおおまかな仕組み (PDF ファイル: awkhtml.pdf)


3 Yahoo! ニュース記事の構造

Yahoo! ニュース記事の HTML ファイルでは、 特に画面を分割して情報を配置するために <table> タグ (及びその中で使用される <tr>, <td> タグ) が多用されています。 これは画面内に複雑なレイアウトで色々な情報を盛り込んでいる WWW ページの 特徴です6。 ニュース記事の内容自体も、ある <table> タグの要素になっています。

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>
  ........

今回は、この中から不要な部分を削除して、 必要な情報のみを取り出すことにします。 必要な情報とは、上の中の以下の部分であるとします。

  1. <title>$\sim$</title> の内容
  2. <!--- CONTENTS_TITLE_TABLE ---> の後ろにある <b><font size=+1>...
    </small> の部分
  3. <!--- OUTLINE_TABLE ---> の後ろにある記事の本文
  4. <!--- /YBB module ---> の後ろにある 「Copyright (C) 2006 ...」の部分

出力は、必要な部分が見つかったら随時その時点で出力する、 という方法もありますが、 今回は、必要な部分を一旦変数に保存しておいて、 HTML ファイルを全部読み終わった後で出力することにします。 このようにすることで、元の記事内の配置によらない出力を行うこともできますし、 出力の前に必要な部分があるかどうかのチェックなどを 行うこともできるようになります。 全部読み終わると AWK は END ブロックに処理を移しますから、 出力はこの中で行うことにします。


次へ: 4 目標となる行の取り出し 上へ: AWK による HTML ファイルの整形 前へ: 2 HTML のおおまかな仕組み
竹野茂治@新潟工科大学
2006年8月14日