[Go言語]Go言語でスクレイピング!~CSVファイル出力付き~

こんにちは。KOUKIです。

goroutineを学ぶために、何かサンプルがないかとYoutubeで探していたところ、面白そうな動画がアップロードされてました。

この動画で紹介されているコードは、Webページから情報をスクレイピングして、その結果をCSVファイルに出力します。

goroutine化ができそうなコードだったので紹介します。

必要なモジュール

goroutine化前

簡単な説明は、コメントしました。本当に簡単ですけどね^^;

このプログラムを実行するとWebページからスクレイピングした情報をdata.csvファイルに出力します。

Time:3m30.197672269s」と表示されたので、約3分かかるようですね。これをgoroutineを使って高速化しましょう。

goroutine化後

直感的な感じだとネットワーク越しにアクセスしている「c.Visit」の処理がボトルネックになっている気がします。

この処理をgoroutine化してみましょう。

goroutine化するとその処理がサブプロセスとして実行されます。

しかし、実装上、main関数の処理が先に終了してしまうので、syncパッケージのWaitGroupを使って、サブプロセスが全て終了するまで、main関数が終了するのを待ちます。

プログラムを実行してみましょう。

今度は、「Time:2.763387294s」になりました。約3秒なので、かなり早くなったと思います。

おわりに

スクレイピングすることができるCollyは、3rd-Partyのモジュールですが、結構便利ですよね。私もYoutube動画で初めて知りました。

それにプラスして、goroutineを使うと処理がめちゃくちゃ早くなることも体験できたと思います。

どんどん活用していきましょう!

go記事まとめ

お勧め書籍

コメントを残す