2020年の春、日本中がマスク不足に見舞われました。家の近くの薬局は、朝5時からマスクを買い求める人々で長蛇の列、インターネットではショップサイトでは出た瞬間に売り切れで定価では買えず、どんどん高騰している状況でした。日中は仕事もあり、PCに張り付いて、ネットショップの更新ボタンを連打しているわけにもいかないので、そこで流行りのスクレイピングに挑戦しようと思ったのがきっかけでした。スクレイピングをするには。。。ということで、これまた流行りのPythonに手を出したという流れです。狙いはコストコオンラインに定め、スクレイピングへの挑戦が始まりました。
Pythonを始めるにあたって、ネットでも調べましたが、python入門本もいくつか買いました。はじめは、本が厚けりゃ網羅できるだろ的な感じで、オライリー社の「入門Python3」を買って、パラパラ読みながら基礎を学んでいきました。なんとなく、変数をつかって、文字列の出し入れとか計算とかができるようになってきて、for文で繰り返し処理とか、リストで格納だとかできるようになってきました。その次には、「独学プログラマー」という本を買って、よくわからなかったオブジェクト指向とかも、概念的なものはわかった気にはなりました。(今でも使いこなせてはいませんが。。。)
一ヶ月ぐらい暇を見つけては、当時使っていたJupyter Notebookにコードを打っては試す。打っては試すをひたすら繰り返していたのを思い出します。
しかし、ライブラリには悩まされました。スクレイピングをするには、ライブラリでBeautifulSoupやSeleniumを使うといいらしいというのは、本やネットで書いてあるものの、いくらコードをコピーしてもうまくいきません。そもそも、これらを使う前には、Requestsってのがあったりと、わけがわからんとひたすらキレていました。ようやく、BeautifulSoupは、HTMLで書かれたものを処理するライブラリで、Seleniumは、ブラウザを仮想的に動かしてくれるものとわかるまで一週間以上かかっていた気がします。とりあえず、コストコのホームページを処理するには、BeautifulSoupを使えば、事が足りそうだということで、進めていきました。
それにしても、BeautifulSoupなんて名前がHTMLの処理するライブラリなんて思いもつかないし、なんでこんな名前にしたんだろうと思いましたが、またまた調べ始めるとねれなくなりそうなのでやめました。
コストコオンラインは、URL上に検索文字が入るパターンだったので、「マスク」や「不織布」というキーワードでその結果にちゃんとマスクがあるかどうか?を判断して、あれば、LINEで知らせてくれるプログラムは完成しました。Scheduleというライブラリで3分毎にチェックプログラムを走らせ、マスクの有無を判定するというものです。しかし、このあと、2つの問題が発生します。①そもそもアクセスが殺到していてページが重い。②コストコ側もこういったプログラムによるスクレイピングを弾くために、検索結果にマスクを出さなくなった。という問題です。マスクを見つけるには、HPから一つ一つカテゴリを追っていかないと出さないようになったようで、検索しても結果に出なくなりました。さすがに、Python初心者の僕にはもうお手上げで、結局、コストコでマスクを手に入れることはできませんでしたが、プログラミングの面白さを思う存分味わえたと思っています。
こういった試行錯誤から、学んだのはやっぱり、必要と思ったら、Pythonを活用してみるとか、人に頼んで買ってもらうとかコストが発生するということ。今回のマスクが必要という目的を達成するために、プログラムを使って自動化する、もしくは、誰かに頼んでHPを更新してもらう、お店で並んで買ってもらう、もしくは、マスク自身を作ってしまうなど、いろいろな手段が出てきます。そこがビジネスの第一歩なんだろうな実感しました。
僕自身もただプログラムを学びたいから始まっていたら、とうの昔に挫折していたんだろうなとも思います。手段が目的化するということのないように、今やっている作業は、なんのためか?ということを振り返りながら、更にプログラミングスキルを高めていこうかなと思う今日この頃です。