Geek

Gmail(Inbox)の設定かとおもってかなり悩んだのでメモ。

とあるRSSに対応していないWebページの更新を取得する必要があったので、スクレイピングして更新があった際にのみメール通知の仕組みを作成した。スクレイピングの良し悪しがあるので、スクレイピング自体については触れない。

前提

  • シェルスクリプトの中でUTF-8 の日本語文字列をメール送付する
  • echo "Update ○○がアップデートされたよ!" |mail username

みたいなシェルスクリプトをCronで実行する

この時、cronで動かした時のみ本文が空で本文のファイルが添付ファイルとして送信されてくる。メールのソースを見ると"Update ○○がアップデートされたよ!"という文字列がバイナリ化して添付されている模様。

手動での実行時には起きない。本文に日本語がない("Update!")状態だと送信がされる。

原因

メールのソースを見ると、

```

Content-Type: application/octet-streamContent-Transfer-Encoding: 8bit

```

として送信されてきている。どうやらメールの送信時(受信時?)に文字コードが取得できていない模様。日本語文字列がキーとなっている様子なので、シェルスクリプトの冒頭を以下のようにしてやると良い。

```

#!/bin/sh
export LCCTYPE=jaJP.UTF-8

```

これでメールの受信時に文字化けがしないことになった。


関連キーワード(ユーザータグ):
サーバ
シェルスクリプト

Geek
2014年に「クローラー/スクレイピング Advent Calendar 2014」というものがQiita上であったらしい。
その中で興味がわいた、
シェルスクリプトを使って「これから毎日金相場をスクレイピングしようぜ?」
を試してみたところ、現状では利用できなくなっていたので、
少し手を加えて、2016年現在の形式に変換した方法。

2014年以降、田中貴金属のWebページがリニューアルしたのではないだろうか。

実際、上記のページでは、貴金属価格の表は、以下の状態だが、

シェルスクリプトを使って「これから毎日金相場をスクレイピングしようぜ?」という話

現在は、以下の様に、表の形式が全く異なっている。

貴金属価格 2016年4月13日現在

スクレイピングするために、一部手を加える必要がある。

※スクレイピングは情報収集のための手法です。
悪用等して過度な負荷をサイトにかけない様にしましょう。

関連キーワード(ユーザータグ):
scraping
スクレイピング
シェルスクリプト

貴金属価格