【初心者のためのPython入門】Webスクレイピング〜Webページから任意のデータを抽出する〜

16602923 関連するタグと用語の web スクレイピングの抽象的な単語雲 728x634 - 【初心者のためのPython入門】Webスクレイピング〜Webページから任意のデータを抽出する〜

nomagram - 【初心者のためのPython入門】Webスクレイピング〜Webページから任意のデータを抽出する〜

1. 概要

 

今回は、Webスクレイピングを利用して、Webサイトから任意の情報を抽出するプログラムの作成です。
何かの参考程度にこのページのソースコードを利用してみてください。
ここでは、URLを指定した場所から、指定したHTMLタグの範囲内の情報を抽出していきます。
プログラムの概要としては以下のものです。

 

・指定したURLから任意の情報を取得する。
・取得データの中からHTMLタグ単位で指定した範囲内の情報を抽出する。

 

コードとしては以下のものです。

 

・urlopen()で指定したURLからデータを取得する。
・取得したデータをBeautifulSoup()にて解析する。
・soup.find()で任意の情報を抽出する。
・soup.find_all()で任意の情報を取得してforループで表示する。

 

それでは、ファイルエディタウィンドウを開いて、任意の名前.pyのファイルを作成・保存してください。

 

2. 必要なモジュールのインストール

 

今回のプログラムで利用するモジュールはbs4モジュールになります。
bs4モジュールは、Python付属ではないため、インストールが必要となります。
コマンドプロンプトもしくはターミナルなどでインストールを実施してください。

 

 

これで、必要なモジュールの準備完了です。

 

3. urlopen()でデータを取得する

 

まずはじめに、上記でインストールした各モジュールをインポートします。

 

 

次に、変数(url)を用意し、取得したいデータがあるURLを変数に格納します。
今回は、このサイトのWebスクレイピングに関する記事のURLを指定しています。

 

 

次に、request.urlopen()を利用します。
上記のモジュールのインポート時に、urllib.requestをreqに変換していますので、req.urlopen()として利用します。
そして、req.urlopen(url)にて取得したデータを変数(res)に格納します。

 

 

ここまでで、urlopen()で指定したURLからデータを取得することができました。

 

4. BeautifulSoup()で取得データを解析

 

BeautifulSoupをインポート時、BeautifulSoupのライブラリを取り込みます。
セッション2で対象となるデータを取得済みです。
なので、変数(soup)を用意し、BeautifulSoupのインスタンスを作成します。
ここでは、BeautifulSoup()にて、第1引数にresを指定し、第2引数に解析を行うパーサーの種類を指定します。
HTMLを解析するためには、”html.parser”という値を指定します。
“HTMLを解析する(HTMLパース)”とは、HTML文法規則にのっとった文字列を、その文法に基づいて字句解析し、意味や構造を解釈することをいい、HTMLパースを行うプログラムのことをHTMLパーサーといいます。

 

 

あとは任意のデータを抽出すれば完了です。

 

5. 任意のデータを抽出する

 

ここで、一度URLで指定したページのリソースを確認してみましょう。
開発者ツールを利用してページのリソースを確認することができます。
Windowsの方は、F12を押下して頂ければ表示されるかと思います。
Macの方は、optionキー+commandキー+Iを入力すると表示されます。

 

ページのリソースを確認してみると、<html>要素から始まり、<html>要素の中に<head>と<body>があり、<body>の中に<header>と<div>があり、、、のように様々な要素が階層構造として存在していることがみて取れるかと思います。

 

そこで、soup.find()を利用して、任意の要素を指定して見つけます。

 

 

最後に、soup.find_all()を利用して、複数の任意の要素を一気に取得します。

 

 

これで、任意のデータを抽出するプログラムの完成となります。

 

 

ファイルを実行して、試してみてください。
Webスクレイピングを利用すれば、画像であったり、取得したテキスト文書などをファイルに書き込んだりなど、様々な応用に使えると思います。
読んでくださった方もぜひPythonでWebスクレイピングを行ってみてください。

 

それでは!

 

 

機械学習や分析の分野に興味があり、pythonを学びたいと思っている方は是非こちらもどうぞ↓

誰でも30日間で習得出来るpython学習法

 

ABOUTこの記事をかいた人

sugi

大学卒業後、IT企業に就職を果たす。システム開発・人工知能に触れながら大手企業と業務をこなす。2年半後脱サラし、現在フリーランス活動中。 2019年2月から起業する予定。 自社サービス及び製品を開発し、売り上げを立てている。