【入門】Python用ライブラリを使用したWebスクレイピングとは?

web開発

2018/07/25

web開発

Webページのタイトルや本文、写真など特定のデータを抽出する技術のことをWebスクレイピングといいます。この技術を活用することで、他社のWebページの研究、また自社のアプリ開発に応用させることができます。

この記事ではWebスクレイピングを行う時の注意点や、Pythonを使用したスクレイピングの方法などを紹介します。

 

Webスクレイピングとは?

Webスクレイピングとは、WebサイトからWebページのHTMLデータを取得して集め、見出しや写真といった特定のデータを抽出するコンピューターソフトウェア技術のことです。
そして、このWebスクレイピングを行うプログラムのことをスクレイパと言います。

Webスクレイピングは作業を始める前に、対象のサイトをクローリングする必要があります。クローリングとは、WebサイトからHTMLなどの情報を取得する技術で、クローリングを行うプログラムのことをクローラーといいます。

 

Webスクレイピングを行う上での注意点

スクレイピングをして特定のデータを抽出するということは、公開されているサイトであっても、自分の管理元にはないWebサイトの情報を取得する行為です。違法行為をしてしまうことを未然に防ぐために、注意点がいくつかあります。以下を留意の上、行いましょう。

①スクレイピングを行うWebサイトの利用規約、著作権は事前に確認しましょう。
Webサイトの中にはページ内の情報の抜き出しを禁止しているものもあります。そして、抽出した情報を使用する時、著作権法を違反していないか確認しましょう。

②robots.txtの指示を守っているのかも、事前に確認してください。
robots.txtは検索エンジンのクローラー(ロボット)からWebページへのアクセスを制限するためのファイルです。robots.txtにはアクセスしても良いページ、してはいけないページなどの記述があるので、該当のページのスクレイピングが許可されているか確認しましょう。

③サーバーアクセスをする時は最低1秒以上間隔をあけて、Webサーバーに負荷をかけないようにしてください。
Webサーバーに負荷がかかると、他の閲覧者がサイトを見られなくなったりサーバーが落ちてしまったりします。

④クローリングをするためのプログラム、クローラーを開発する時は連絡先を明示しておくのがおすすめです。
明示しておくことで、問題が起きた時サーバー管理者とスムーズに連絡を取ることができます。連絡先は、クローラーのUser-agentヘッダーにURLやメールアドレスを書きましょう。

 

実際2010年3月には、実際に自身で作成したクローラーを図書館の蔵書検索システムに実行し、実行者が偽計業務妨害容疑で逮捕されてしまう事件が発生しました。作成されたクローラー自体に違法性はありませんでしたが、一時的に他の閲覧者が蔵書検索システムに接続できなくなってしまったため、事件に発展してしまったのです(岡崎市立中央図書館事件 – Wikipedia)。

 

PythonでWebスクレイピングをする方法

Pythonで、Webスクレイピングを行う方法は大きく分けて2種類あります。ライブラリを使用して行う方法と、Scrapyなどのフレームワークを使用して行う方法です。ただし、個人でWebスクレイピングを行う場合、フレームワークを使用することはあまりありません。

個人の場合は標準ライブラリである「urllib」や「Beautiful Soup」、また専門ライブラリである「Requests」を使用してWebスクレイピングを実行することが多いです。

 

PythonでWebスクレイピングを行うメリット

数あるプログラミング言語の中から、Pythonを選択してWebスクレイピングを行うメリットは大きく2つあります。

Python

1つはWebスクレイピングをするにあたって、Pythonであれば便利なライブラリが多くある点です。そしてもう一つはPythonの言語仕様がシンプルな点です。言語仕様が簡潔なため、記述するコードの量が少なくても、目的となるWebスクレイピングのプログラムを作成することができます。

 

Python2系・3系、バージョンはどちらを使用した方がいいのか

Pythonのバージョンには大きく分けて2系と3系の2種類があります。初めてPythonを使用する人は3系を使用するのがおすすめです。

PythonにはWebスクレイピングができる多くのライブラリがあり、中にはPython 2系でしか使用できないライブラリもあります。しかし、有名なライブラリの多くはPython 3系に対応しているため、3系のみを学習しても特に問題ありません。

ライブラリ

こちらの記事ではPython 3系に対応している「Requests」と「Beautiful Soup」というライブラリを使用したWebスクレイピングの方法を紹介します。

 

Webスクレイピングを行う際の基本的な手順

Webスクレイピングを行う時は、以下の手順が基本的な手順になります。

1.クローリングをして対象のWebページを取得する
  ↓
2.取得したWebページを解析し、スクレイピングをして特定のデータを検索・抽出する

3.スクレイピングして抽出したデータを整形し、保存、もしくは表示する

上記の一連の作業を行うために、Webスクレイピングのライブラリやフレームワークを使用することが多いです。

 

RequestsとBeautiful Soupを使用してWebスクレイピングをする方法

 

Requestsを使用してWebページを取得する

「Requests」はサードパーティ製の、Pythonで書かれたApache2 Licensed ベースのHTTPライブラリです。また、「Requests」はWebサイトのデータのダウンロードなどが簡単にできる、人が使いやすいように設計された専門ライブラリでもあります。なお、専門ライブラリではなく、標準ライブラリでスクレイピングを行う時は「urllib」を使用することがあります。

Python3系バージョンのRequestsをインストールする時は、以下のコマンドを打ちます。

$ pip3 install requests

続いて、Requestの使い方をいくつか紹介します。Request を使用してWebページの取得する時は、以下のコマンドを打ちます。

import requests
r = requests.get(‘取得したいページのURL’)

Webページの情報が取得できたら、print()を打ち、カッコ内で取得したい情報を指定することで、特定の情報を見ることができます。ヘッダー情報を取得したい時は「r.headers」を、ボディ内の情報を取得したいなら「r.content」と打つことで、情報を見ることができます。

 

Beautiful Soupで取得したWebページをスクレイピングする

「Beautiful Soup」はPythonで動作するHTMLとXMLのパーサーで、スクレイピングの実行に適した機能を備えたライブラリです。ただし、Beautiful SoupのみではURLが指定できないので、標準ライブラリである「urllib」や、専門ライブラリである「Requests」と併用して使用することが多いです。

Python3系バージョンのBeautiful Soupをインストールするには、以下のコマンドを打ってください。

$ pip3 install beautifulsoup4

インストールが終わったら、Google Chromeの検証ツールを使用して、取得したいHTMLを確認し、XpathやCSSセレクターによって指定します。

なお、Beautiful SoupのみではスクレイピングするURLを指定できないので、Requestsを併用する使い方を紹介します。

import requests
from bs4 import BeautifulSoup
r = requests.get(“取得したいページのURL “)
soup = BeautifulSoup(r.content, “html.parser”)
print(soup.select(“抽出したいデータのXpathかCSSセレクター”))

 

Udemyでは、Python 3系の基礎が習得できる動画講座なども用意しています。

実際に手を動かしながら方法を確認していくことで、スキルアップすること間違いなしです。

是非、Udemyを活用して、Pythonや機械学習の学びを深めてくださいね。

 

目的別!最先端ITスキル講座

基礎的なパソコン操作の知識があればOK!

最新!iOS12アプリ開発講座

日本を代表するデータサイエンティスト辻真吾氏による人気講座

初級者から学べる人工知能講座の決定版

  • シェア
  • ツイート
  • Poket
  • はてなブックマーク
  • フォロー
  • シェア
  • ツイート
  • Poket
  • はてなブックマーク
  • フォロー

関連記事