.net column
.NET開発者のためのブログメディア

pythonエンジニア

Pythonでのスクレイピングの極意を解説!スクレイピングの基本的な使い方もわかりやすく紹介!

2021年02月24日
SE
Pythonでのスクレイピングの使い方について教えてください。
PM
分かりました。Pythonでのスクレイピングの基本的な使い方についてご紹介しましょう。

スクレイピングとは?


スクレイピングとはWebサイトから自動的にデータを取得し、そのデータから必要な情報を抽出・加工することをいいます。中でもPythonはライブラリが充実しているので、スクレイピングの基本をマスターするのは比較的簡単といえます。

スクレイピングで可能なことは

スクレイピングは、Webサイトからの情報の収集であり、スクレイピングで可能なことは、例えば株式情報の収集や機械学習のための画像の収集など様々です。

ここでは、robots.txtでスクレイピングを許可されている「株投資メモ」サイトから情報の抽出を行います。robots.txtとはサイトのルートディレクトリに置かれているファイルで、そこにスクレイピングをAllow(許可)するのかDisallow(禁止)しているのかが書かれています。法に抵触しますので禁止のサイトは、スクレイピングはやめましょう。

スクレイピングの方法

スクレイピングするには、HTMLの知識が必要です。それは、スクレイピングはHTMLのタグを頼りに情報を収集するからです。

サイトからHTMLのタグごとに情報を収集し、それをタグを頼りに収集する情報を絞って欲しい情報を抽出することになります。

Pythonでのスクレイピングでよく使われるライブラリ

Pythonでのスクレイピングでよく使われるライブラリに、HTMLデータを取得するのにRequests、収集した情報からデータを抽出するのにBeautiful Soupなど、そして、JavaScriptを使用した動的なサイトからの情報収集やサイトへのログインにはSeleniumがよく知られています。

ここではRequestsとBeautiful Soup、そしてエクセルを操作するOpenPyXLを利用します。

スクレイピングの実践

株式投資メモからの株価の情報を収集します。そして、収集した株価をエクセル・ファイルに保存します。その一連のことをPythonのライブラリを利用して、スクレイピングで自動的に行うのです。

Requestsをインストール

Python3がインストールされていて、パスも通っていることを前提にします。ライブラリRequestsをインストールします。環境はWindows10で、PowerSellを使用します。

pipのバージョンが古いと警告が出ましたので、pipをバージョンアップしておきます。

Beautiful Soupのインストール

次のコマンドをPowerShellに打ち込みます。

OpenPyXLのインストール

次のコマンドをPowerShellに打ち込みます。

Pythonのプログラムのソースコード

いよいよPythonによるスクレイピングの実践です。次のソースコードが株式投資メモサイトから株価の情報を収集し、それをエクセル・ファイルに保存するソースコードです。

ソースコードの解説

ソースコードの解説をしていきますが、コメントに書いてあるとおりです。Pythonによるスクレイピングはライブラリを利用するので、型が決まっていて、ここに書いたソースコードを利用すれば、スクレイピングが許可されているサイトから情報の収集は可能です。

とあるところは、ここでは例としてバンダイナムコホールディングス(銘柄コード:7832)
の2021年度を調べます。

ユーザーエージェントの記入

ソースコードにはユーザーエージェントの記入箇所があります。ユーザーエージェントは次のサイトの「現在のブラウザー」の箇所がユーザーエージェントになります。

確認くん

個人的ですが、私の場合は次がユーザーエージェントでした。

Pythonのプログラムを走らせる

それでは必要箇所の記入が終わりましたので、ソースコードを適当なところに、例えばscraping.pyとして保存し、プログラムをコンパイルします。

すると同じディレクトリに「7832 (株)バンダイナムコホールディングス.xlsx」ファイルが生成されているはずです。それを開くとプログラムを走らせた日までの株価のデータが抽出されています。

それをグラフにするなど加工すれば、価値あるデータに変身です。

SE
Pythonでのスクレイピングの使い方、よく分かりました。
PM
スクレイピングをマスターすれば、いろいろと応用が利き、様々なデータの収集が可能ですので、ぜひスクレイピングに興味のある方は挑戦してください。

最後に

Pythonによるスクレイピングは、ほとんどがライブラリに依存していますので、ソースコードはここで紹介したもので十分に応用が利きます。ただし、現在では多くのサイトでスクレイピングが禁止されていますので、法を犯さないように気を付けてスクレイピングを試してください。

また、Pythonに興味のある方は、一度はスクレイピングに挑戦してみてはいかがでしょうか。得るところが多くあります。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags