ここでは、「Web API」を用いたスクレイピング方法について解説しています。
APIとは

API(Application Programming Interface)とは、サイトが備えている機能を外部から利用できるようにした環境を指します。例えば、スクレイピングを行う場合だったら、欲しい情報があるサーバーにアクセスして、その結果がXMLやJSONという形式で返ってきます。
メリット・デメリット
メリット
メリット | 内容 |
使い勝手が良い | 欲しい情報があるサーバーにアクセスして、その結果がXMLやJSON形式で返ってくるので、情報を抽出・解析するのが容易です。また、自動化などしてアプリ開発等の応用に活かせる。 |
サーバーの負荷軽減 | APIを提供している側からするとサーバーの負荷を軽減することができます。予めAPIを用意しておくことでクローリングによるサーバーへの負荷対策になります。 |
デメリット
デメリット | 内容 |
APIの変更・停止 | 企業・団体が提供しているAPIは規約が変更されたり、停止されたりすることが多いです。GoogleやAmazonなどの大手も含め、規約が変更されたり一部停止されたりします。 |
必ずしも「無料」とは限らない | APIは提供している企業や団体の有益情報なので、全てのAPIが無料では利用できません。中には太っ腹な企業があり、無料で利用できたりしますが、基本的にはお金を払ってライセンスを取得して利用します。 |
APIを用いた使用例
#APIを用いた使用例
import requests
import json
api = "https://www.land.mlit.go.jp/webland/api/TradeListSearch?from=20151&to=20152&area=13"
#1---api
headers = {'content-type': 'application/json'}
#2---HTTPリクエストヘッダー
response = requests.get(api,headers=headers)
for out_data in response.json()['data']:
#3---jsonの解析
print("取引の種類:" + out_data['Type'])
print("市区町村名:" + out_data['Municipality'])
print("地区名:" + out_data['DistrictName'])
print("面積(平方メートル):" + out_data['Area'])
print("取引価格(総額):" + out_data['TradePrice'])
if "BuildingYear" in out_data:
print("建築年:" + out_data['BuildingYear'])
上記のプログラムは、国土交通省「不動産取引価格情報取得API」を用いた任意の値、文字を出力する内容となっています。
1の部分でAPIのURLを指定しています。この中に「from」「to」「area」があり、条件(パラメータ)を同時に指定しています。内容としては「平成27年第1四半期~平成27年第2四半期 東京都の不動産取引価格情報を取得する」を意味しています。
2の部分では、HTTPのリクエストヘッダーを記述しています。「json」ファイルであることを示しています。
3の部分では取得したjsonファイルの解析を行い、「取引の種類」「市区町村名」「地区名」「面積(平方メートル)」「取引価格(総額)」「建築年」を取得して出力しています。
その他、APIを用いた使用例
項目 | 内容 |
Amazon | Under construction . . . |
楽天 | Under construction . . . |