読者です 読者をやめる 読者になる 読者になる

ぼく、某雑誌付録の日経平均株価をpythonでスクレイピングしようっていうのに挑戦したんだけど…なんかシェルスクリプトで出来るレベルだったのでやっちゃいました。

ぼく、Pythonでwebスクレイピングっていう、残り少ないGWにぴったりな感じの付録に期待して、読んでみたのです。

 

1〜5章までの5章構成で

4章まではPythonの基本構文、5章でメール送信、webスクレイピングって感じの構成でした。

で、始める前にさらっとスクレイピングどんな感じかな〜って読んでみたら、あっ…(察し)という感じだったので、読むのやめました。

 

やってることは下記のシェルスクリプトと同等でした。

※出力とやってることのレベル感はって意味ね。

  もちろんロジック的には違います。

curl -s https://stocks.finance.yahoo.co.jp/stocks/detail/?code=998407.O | grep stoksPrice | grep -o [0-9,.].*[0-9]

ちょっと正規表現下手くそなのはご愛嬌。

 

このスクリプトが何をやっているかというと、

  1. yahooの株価ページを取得
  2. stoksPriceという文字が入っているタグ内に平均株価が書かれているので行検索
  3. 株価は数字or,or.で表されているため、そこの部分だけ検索し抜き出し

という単純なものです。

 

付録のpythonコードは、一応HTMLのパース・解析とかを

pythonのライブラリ使ってやってるので

スクレイピングといえなくはないですが、

class要素名(stoksPrice)を指定してそのタグ内容を取得する、

という感じだったので、これならclass名でgrepでいいんじゃね?って感じでした。

こっちの方がpython使わなくていいし、短いし…って感じでした。

 

一応自分の書いたスクリプトをもう少し実用的なふうに改良。

date "+%Y/%m/%d-%H:%M:%S " | tr -d '\n' >> testfin.txt &&  curl -s https://stocks.finance.yahoo.co.jp/stocks/detail/?code=998407.O | grep stoksPrice | grep -o [0-9,.].*[0-9] >>testfin.txt

↑改行されちゃってますが1行です。

うーん、雑ですねぇ…まあいいや。

 

改良版はコマンドを打った時刻 + 日経株価平均をtestfin.txtに出力するスクリプトです。

出力例は下記の通りです。

2017/05/06-00:21:13 19,445.70

2017/05/06-00:21:15 19,445.70

 

これで多少は、使えるの、、、かな…

日付の形式をまともにしたり、CSVではいたり、株価の形式を整理したり

とかやればもっとマシになるかも…

 

えーと、雑誌の付録の話に戻りますが、やっぱゴールを確認しておくことは大事ですね。。。

これで、まともにGWの残りに取り組んだら、悲しい思い出になるとこでした。。。

(ちなみにPythonの基本文法はうろ覚えで知っているので、ほとんど得るものなかったでしょうね)

 

やりたいことが、どういうレベルなのかっていうのは

きちっと見極めて、確認してから書籍買わないと

お金損しちゃいますね。