Pythonでウェブサイトからデータを入手する(1)

python Python

ウェブサイトからデータを入手する=スクレイピングをするためのプログラムを作ってみましょう!〇(^o^)o

TOUの授業(「初級オブジェクト指向プログラミング」)でPythonを学習していることもあるので、Pythonのインストールはここでは省略します。
以下、Pythonはインストールされている前提での内容となります。<(__)>

どんなプログラムを作る?

あるウェブサイトより、掲載されている情報を取得します。

情報を表示するURLは、https://(省略)000000000000となっています。つまり、数字12桁が情報を区別するキーとなるようです。

数字12桁を変えてみて、アクセスしてみた結果、最大値、最小値を発見しました。

つまり、URLの末尾を最小値からから1ずつ増やしつつ、最大値まで変えていきます。

すべてのURLが存在するとも限らないかもしれません。
最大値を発見する作業の中で、アクセスしたもののページが表示されないケースもありました。
そこで、URLが存在し、ページが表示されたら、データを取得、ページが表示されない場合は何もしないで、次に進むようにします。

取得したデータは、CSVファイルに書き込み、保存します。

プログラムの大枠はだいたいこんな感じです。

でも、カッコ悪いですよね。
せっかく新しい言語を学習しているのに、手法は変わらないのはねぇ。(´ー`)

スクレイピングに必要なライブラリをインストール

スクレイピングを実現するためには、次の2つの動作を行います。

(1)ウェブページにアクセスする
(2)ウェブページから必要なデータを取得する

この2つの動作はPythonだけでは実現できません。
モジュールを追加する必要があります。

(1)のためには、requests、(2)のためには、Beautiful Soup、というライブラリがそれぞれ必要となります。

どちらもコマンドプロンプトを起動し、pip install (ライブラリ名)と入力 → Enterキーを押します。

(1)requests → pip install requests
(2)Beautiul Soup → pip install beautifulsoup4

それぞれライブラリををインストールします。

これで準備完了です。d(^-^)OK

スクレイピングを実行する前の注意点

対象ウェブサイトがスクレイピングを禁止していないかを確認します。
まず、ウェブサイトの利用規約を確認します。
また、robot.txtやHTML内のrobots metaタグでも、スクレイピング禁止を表示しているケースがあります。

robots.txtの場合、https:(URL)/robots.txtで見つかることが多いそうです。(ルートディレクトリに置かれている。)
robots.txtがあり、次のように記載がある場合は、スクレイピングはしないようにします。

User-agent:*
Disallow: /

HTMLファイル内のrobot metaタグに次のような記載がある場合も、スクレイピングはしないようにします。

meta name="robots" content="nofollow"

コメント

タイトルとURLをコピーしました