次へ: 5 全体のおおまかな構造 上へ: AWK によるシェル作業 前へ: 3 wget (PDF ファイル: awkwww4.pdf)


4 複数ページの記事一覧ファイル

Yahoo! ニュースの一覧は、記事の件数が多いと複数の WWW ページに分かれています。 例えば Yahoo! の社会ニュースの場合、 記事の一覧のページの上端と下端に
1/6ページを表示(合計123件) ...
のように書かれていて、その次のページへのリンクが貼られています。

一覧の先頭のページの URL は、例えば社会ニュースの場合は

http://headlines.yahoo.co.jp/hl?c=soci&t=l
ですが、2 ページ目、3 ページ目の URL は、その後ろに追加ページ番号がついて
http://headlines.yahoo.co.jp/hl?c=soci&t=l&p=1 (2 ページ目)
http://headlines.yahoo.co.jp/hl?c=soci&t=l&p=2 (3 ページ目)
のようになっています。 ``soci'' の部分がニュースの分野をあらわしていて、 例えばコンピュータニュースならばここが ``sci'' に、 スポーツニュースならば ``spo'' のように変わります。

今回は、

  1. まず一覧の先頭ページをダウンロード (取得)
  2. そのページから全部で何ページあるのかを読み取る
  3. それに合わせて URL を指定してすべてのページをダウンロードする
  4. それを [5], [6] に従って加工する
とすればいいわけです。

AWK には system() という関数があり、 これを使って外部のコマンド呼び出すコマンドラインを実行することができます。 また、そのコマンドラインの生成やファイル名、URL 文字列の作成は、 文字列を地道に連結してもできますが、 sprintf() 関数を使用すると便利です。


次へ: 5 全体のおおまかな構造 上へ: AWK によるシェル作業 前へ: 3 wget
竹野茂治@新潟工科大学
2006年9月29日