PythonでのWebスクレイピングには「requests」がめっちゃ便利という話

スポンサーリンク

PythonでWebスクレイピングの勉強をしてるのですが、「requests」という、HTTPライブラリがとても便利だと思ったので備忘録として書いておきます。

HTTPとは?

HTTPとは、Hyper text transfer protocolというインターネットにおいてサーバとクライアント(具体的にはGoogle chromeなどのウェブブラウザ)がHTMLなどのウェブページの情報を送受信するためのルールのことです。

Hyper Textとは主にHTMLのことを指しており、次のTransferは転送、Protocolは、手順、手続き、といった意味を持つ単語つまり、HTMLの転送手順、などのような意味となります。

このhttpは私たちがインターネットを観覧するウェブブラウザの上部にも表示されており一番なじみがあるものだと言えます。そしてウェブブラウザに限らず、プログラムからあるウェブページにアクセスしたい、という場合があります。

例えば、最近よく聞く「スクレイピング」「クローラー」というものは、実際にウェブブラウザを立ち上げず(立ち上げるケースもあります)、プログラム上でサーバにリクエストを行い、レスポンスを受け取り、必要なデータだけを高速に抜きだす…といった作業をします。

それに加えてAPIという、ブラウザではなくプログラムからHTTPリクエストを送ることを前提にしたスクレイピングを簡単にしてくれるものを使うと株価や仮想通貨の価格データ・商品の購買データや天気情報などのいろいろな情報を集めて分析することが可能です。

Pythonによるウェブスクレイピング

CやC+などプログラミング言語はいろいろありますが、Pythonの大きな強みとしてはインターネットを使ったWEBマシーンに開発にとても適しているという点です。

その理由の1つにWEBスクレイピングのためのライブラリーが豊富なために知識があまりなくても簡単にWEBスクレイピングができるというものがあります。そのWEBスクレイピングのためのライブラリーとして一番便利で有名なのが「request」です。

スポンサーリンク

Webスクレイピングの流れ

PythonでのWebスクレイピングの大まかな流れは以下の3段階です。

①getでサーバにリクエストを行い、レスポンスを受け取る

②受け取った(レスポンスされた)データを適当な変数に格納する

③.textなどを使って取得したデータをPython上で表示できるようにする

requestのインストール

AnacondaでPythonをインストールしている方は import requests でrequestsの機能を有効化できますが、普通にPythonをダウンロードした方はコマンドプロンプトから「requests」をインストールする必要があります。

コマンドプロンプトの起動方法はホーム画面を開き、プログラム検索でcmd.exeと入力し出てきたものをクリックすると起動します。Win10だと↓な感じで出てくると思います。

f:id:oruka199665:20180222025247j:plain

Python3以降ををインストールしていると、コマンドプロンプトでpipコマンド使用できるので、pip install requests と入力するとインストールが始まります。

f:id:oruka199665:20180222025347j:plain

ANACONDA環境だとデフォルトでインストールされているとおもいますが、ない場合はANACONDAプロンプトからPIPでインストールしてください。

requestsの使い方

グーグルのトップページへGETメソッドでリクエストを送りたい場合は、以下のようにします。

>>import requests
>>>r = requests.get(“https://www.yahoo.co.jp/“)

そして、そのまま変数を呼び出して

 >>> r
<Response [200]>

と返ってくれば、Getは成功しています。一応WEBサーバーからのリクエスト状態にはいろいろ種類があって

200→なんの問題なしOK

403→アクセスが拒否

404→ページが存在しない

500~502→サーバーに問題がありレスポンスが返せない

503→サーバーメンテ

ってな感じで種類があります。getでデータが取れてないってときはこのレスポンスがちゃんと200で帰ってきているかも確認してみてください。そして、Text形式にして引っ張ったデータをPython上で表示させてみます。

>>> print(r.text)

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd“>
<html>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=utf-8″>
<meta http-equiv=”content-style-type” content=”text/css”>
<meta http-equiv=”content-script-type” content=”text/javascript”>
<meta name=”description” content=”日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、など80以上のサービスを展開。あなたの生活をより豊かにする「ライフ・エンジン」を目指していきます。”>
<meta name=”robots” content=”noodp”>
<meta name=”google-site-verification” content=”fsLMOiigp5fIpCDMEVodQnQC7jIY1K3UXW5QkQcBmVs”>

APIで抜き出したデータだとHTMLではなく、JSON形式なのでそれを辞書やリストに変換してあれこれします。HTML形式ならば、ここから必要なデータを抜き出す作業を行います。

参照:PythonでWebスクレイピングする時の知見をまとめておく – Stimulator

スクレイピングの主なAPIの紹介やスクレイピング後のデータクリーニングの手法についてはPythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう という参考書がとても分かりやすかったので、この辺で詰まっている方にはオススメです。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする