Pythonでスクレイピングする方法
Table of Contents
ぜひ読んでほしい方
・Pythonでスクレイピングしたい方
・input()で、ユーザーに任意のメッセージを表示させる方法を知りたい方
コード公開
1 2 3 4 5 6 7 8 |
import requests from bs4 import BeautifulSoup load_url = input('スクレイピングしたいサイトのURLを入力してください。') html = requests.get(load_url) soup = BeautifulSoup(html.content, "html.parser") print(soup) |
このコードでは、requestsとBeautifulSoupというモジュールよ呼ばれるものを利用してスクレイピングを行います。
そこで、これらを使うためにモジュールをあらかじめインストールする必要があります。
必要なモジュールをインストール
インストールのやり方ですが、コマンドプロンプトを起動して以下のコマンドを入力します。
1 |
pip install requests |
1 |
pip install beautifulsoup4 |
これで、下準備は完了しました。ここからは、最初にお示ししたコードの解説に入ろうと思います。
コードの概説
はじめのところに示したコードを再掲します。
1 2 3 4 5 6 7 8 |
import requests from bs4 import BeautifulSoup load_url = input('スクレイピングしたいサイトのURLを入力してください。') html = requests.get(load_url) soup = BeautifulSoup(html.content, "html.parser") print(soup) |
まず、1,2行目のところで先ほどインストールしたモジュールを利用することを命令します。
次に、4行目でプログラムを実行する際にユーザが指定したURLを取得して、5行目のrequests.get()の引数とします。6行目のBeautifulSoup()では、5行目で取得したサイトの情報のうち、大雑把に言いますと何のデータをどのように解析するか指定しています。
最後に8行目でその結果を出力するprint命令をしています。
関数についての説明
ここからは、コード内にでてきた以下の2つの関数について説明していきます。
input()
プログラム実行時にユーザーが入力した値を取得する関数です。引数に文字を入力すると、ユーザーに向けてのメッセージ(プロンプトという)を表示してくれます。
requests.get()
サーバーから情報を取得する関数です。第一引数は必須でURLを指定します。第二引数以降は、さらに任意で引数を指定することもできます。戻り値として、responseオブジェクトが返され、上のコードではhtml変数に格納しています。このresponseオブジェクトはいくつかの属性があり、今回は6行目の第一引数としてバイナリデータであるcontent属性を指定しています。
ちなみに、requests.get()はrequests関数のgetメソッドを利用したもので、他にもrequests.post()などがありますので、詳しくは、戻り値の属性などと併せてhttps://ai-inter1.com/python-webscraping/をご覧ください。