Python使って効率化!!―スクレイピングでさくさくデータ収集
公開日
2020年12月11日
更新日
2020年12月11日
皆さんいかがお過ごしでしょうか。年の瀬も迫り、今年は新型コロナウイルスの世界的流行や東京五輪の中止など、まさしく激動の1年となりました。やり残したことがある方は、この1ヶ月に終わらせてきもちよく新年を迎えたいところですね。
外出自粛や在宅勤務の傾向が続く中、自宅で勉強できるプログラミング言語が最近注目を集めています。中でもPythonは頻繁に取り上げられ、普段セミナーをお話する中で「Pythonって何から勉強したらいいの?」「Pythonってどうしたら書けるようになるの?」など、ご相談をいただくことが多くなってきました。
そこで、今回はPythonでできることの1つ、データスクレイピングを紹介してみようと思います。データスクレイピングを使うと、インターネットにある情報を取得する際、意外に時間がかかるコピー&ペーストの作業を、PCが代わりに行ってくれます。早速見ていきましょう!
この記事の主な内容
今回のお題
Webページの一例として、例えば当ブログ「マスログ」には少しマニアックな数学、数学者の歴史、実用的な統計学など様々な記事が投稿されています。
記事の中から自分の興味があるタイトルを探してみたいですが、記事数が多く一つ一つ記事を見ていくのは大変です。そこで、全ての記事のタイトルをまとめて集計してみることにします。記事タイトルを保存するためには、タイトルをコピーして貼り付け、コピーして貼り付けを延々と繰り返す必要があります。10記事ほどなら何とか頑張れるかもしれないですが、数百記事ともなると終わりが見えない大変な作業になります。
そこでデータスクレイピングを使って、PCに自動集計してもらいます。データスクレイピングを行うには、以下の手順が必要になります。
- ① スクレイピングしたい場所の特定
- ② スクレイピングを実行する
一つずつ見ていきましょう。
① スクレイピングしたい場所の特定
他の人に「ここをコピペしておいて」と頼む場合は、指をさしてコピーする場所を教えてあげれば良いでしょう。しかし、PCに指示する場合は、同じ方法では伝わりません。なぜなら、普段私たちが目にするインターネットのページは、PCにはHTMLと呼ばれる言語で認識されているからです。
一方HTMLに不慣れな方からすると、どこに記事のタイトルが書いてあるか見当がつきませんね。ですがご安心ください、実は、HTMLを詳しく知らなくても、どこが収集したい部分なのか簡単にわかる方法があります!
Chromeのディベロッパーツールで画面の矢印のボタンを押下し、今回抽出したいWebページのタイトル部分を選択すると、該当するHTMLがハイライトされます。これは便利!
これで、抽出する箇所が分かります。目を凝らしてみると、<h1 class = “artcl-ttl>、<a href =”https://wakara…” class =”ovr”>というブロックに囲まれた箇所に記事のタイトルがあることがわかります。これが記事のタイトルの「住所」にあたります。h1やclassなどの意味については今回は割愛しますが、詳しく知りたい方はHTMLについて勉強してみましょう。
② スクレイピングを実行する
HTMLを見て取り出したい住所がわかったので、早速スクレイピングを行ってみましょう。スクレイピングにはプログラミング言語「Python」を使います。Pythonは近年非常に注目度が高まっており、特にデータ分析や人工知能開発の分野では必須とも言えるプログラミング言語となっています。
スクレイピングを行ってcsvデータに保存されたものを開くと、無事wordに記事のタイトルを全てまとめることができました!
これで急に上司「ホームページの記事全部まとめておいて」と言われても焦らずに済みます。私は前職で研究所にいたころ、先行研究の論文を調べるためにスクレイピングを活用していました。
終わりに
データスクレイピングを応用することで、ニュース記事やSNS、飲食店サイトの口コミ情報など、インターネット上にあるデータを非常に効率よく収集することができます。弊社ではデータスクレイピングをはじめPythonを使ったデータ分析について、使える・役立つ内容をセミナーで解説しています。プログラミングを行ったことがない方向けにもセミナーを行っておりますので、お気軽にご参加ください。
また、Pythonの様々な実用的な使い道を知りたい方は、こちらの本もおすすめです。今回のデータスクレイピングをはじめ、フォルダの整理やExcelとの連携など、Pythonの様々な使い方が紹介されています。