Webスクレイピングをするにあたって、まず考える必要があるのは
欲しい情報をどのWebページから持ってくるか(どのWebページ情報が欲しいか)です。
そこで使われるのがPythonが(ライブラリとして)持っているrequestsです。
本記事ではrequestsについて理解を深めましょう!
Webページが表示される仕組み
Webページ表示の仕組みを知ることで、requestsの働きをより理解出来るようになります。
普段私たちがインターネットを使って何かをサイトをみるときには、
自分が使っているパソコンから、サイトの情報を持っているサーバーに○○の情報をくださいとお願いしたあとで、パソコン上に表示される仕組みになっています。
この自分が使っているパソコンから、サイトの情報を持っているサーバーに○○の情報をくださいとお願いすることを”リクエスト”といい、サーバーがリクエストに対して情報を渡すことを”レスポンス”といいます。
これをPythonでしたいとなったときに必要なのが、次で紹介する”requests”というライブラリになります。
Reaestsの動きを見る前の準備!
Macを使用している方は”ターミナル”
Windowsを使用している方は”コマンドプロンプト”もしくは”Powershell”を開きます。
そして以下のコマンドを打ってEnterを押します。これによりいつでも自分のPCでrequestsを使える状態にします。
$ pip install requests
次に”python”もしくは”python3″と入力し、Enterを押します。これでPythonの動作確認が出来るようにします。
$ python3
ターミナル(コマンドプロンプト)の右側が>>>と表示されていれば、Pythonの動作確認が出来る状態になっています。これをインタラクティブシェルといい、コードを1行ごとに確認できます。
>>>
この状態で今度は
>>> import requests
と打って、Enterを押してみましょう。
>>>
と何も表示されていなければ、OKです。 何かごちゃごちゃと出ている場合は正常にinstallができていない可能性がありますので、一度
>>> quit()
と入力して、再度
$ pip install requests
からやり直してみてください。
requestsの動きをみよう!
ここまでお疲れ様でした。ここからようやくrequestsの動きを観察出来るようになります!最初は設定で疲れちゃいますが、慣れるまでは毎回設定手順を見て、ゆっくりと進んでいきましょうね。
今回は”はてなブログ”のURLを用いて遊んでみましょう。
>>> requests.get("https://hatenablog.com/")
と入力後Enterを押してみましょう。
<response[200]>
と表示されていればOKです。
200ってなんぞや。となるかと思いますが、これはお願いしたらちゃんと返事くれたよ〜ってことです。
この数字(ステータスコード)が403とか500とかになっていると、ちゃんと返事が得られなかった。。。ということになります
厳密には数字はcodeといってそれぞれ詳しい意味を知りたい場合はgoogle先生にお聞きしてみてください
先ほどのコードで返事はくれたわけ何ですが、中身がまだ我々が読める状態にありませんので、読めるようにしていきます。
>>> response = requests.get("https://hatenablog.com/")
と打って、Enterを押す。この”=”は代入を表しており、右辺を左辺に代入するという意味になります。なので、サーバーからいただいたお返事を”response”という所に置きました。自宅ポストに投函されるイメージを持っていただければと思います
次にいただいたお返事を開封して読みたいので
>>> print(response.text)
と打ってEnterを押してみてください。
すると、こんな感じの膨大な情報が表示されます。
この表示されている文字がHTMLと言われる、Webページを構成している正体です。
ここまでがrequestsの役割であり、
- サーバーへ欲しい情報を送ってもらうようお願いする。
- サーバーから情報をもらう
この2点を理解できれば、十分です!
次に理解すること
私たちはネット上に欲しい情報があれば、サイトを調べて、そこから自分の欲しい情報を取ってきますよね。
requestsではサイトを調べるところまでをやりました。
requestsの動きが何となくわかれば、次にやることとしてサイトの情報つまり、HTMLから欲しい画像、リンク、文字を取り出す作業が必要になります。
Pythonでこの作業を行うのに使用するのが”BeautifulSoup“です。
何とも美味しそうなスープ。。。名前がインパクト大なので覚えやすいですね(*゚▽゚*)
今後BeutifulSoupについても改めて概要から説明できればと思います。
本記事を読んでいただきありがとうございました。
コメント