【初心者用】Pythonでスクレイピングをしてみよう
公開日: 2022/6/9
更新日: 2022/6/9
前回の記事で、Pythonのプログラムを実行するための環境構築について解説しました。
今回の記事では、Pythonで出来る作業の代表格でもあるスクレイピングを実際に行い、プログラミングのイメージを可視化していければと思います。
前回の記事で構築した、Jupyter Notebookを使っていきます。
今回の記事では、Pythonで出来る作業の代表格でもあるスクレイピングを実際に行い、プログラミングのイメージを可視化していければと思います。
前回の記事で構築した、Jupyter Notebookを使っていきます。
1. この記事を見ることで分かること
Pythonを用いてWEBサイトをスクレイピングする方法
2. 注意点
スクレイピングは使い方次第では、時間効率を上げる優れた技術ですが、使い方を間違えれば訴訟問題にまで発展する可能性がある危険な行為です。
主な注意点は下記の通りです。
①スクレイピングを行うサイトの利用規約、著作権などをしっかり確認する
②サーバーにアクセスする時間を最低でも1秒以上の間隔を空け、サーバーに負担がかからないようにする
その他にも注意点はありますが、初心者のうちは上記2点を必ず守るようにしましょう。
3. スクレイピングのについて解説
3-1. よく使うライブラリ
プログラミングでは、よく使う仕組みを1つにまとめ、同じソースコードを何度も書くことが無いようライブラリと呼ばれる物が存在しています。
Pythonでスクレイピングを行う際に良く使われるライブラリについては、下記の3つが挙げられます。
・Requests(Webページを取得する)
・Beautiful Soup(取得したWebページをパースする)
・Selenium(Webページの取得やデータ解析ができる)
今回は、requestsライブラリとBeautiful Soupライブラリのみを使用した記事になるので、Seleniumは次の機会でお話しさせて頂きます。
それでは、まずはRequestsライブラリを使って、簡単なスクレイピングを行ってみましょう!
Pythonでスクレイピングを行う際に良く使われるライブラリについては、下記の3つが挙げられます。
・Requests(Webページを取得する)
・Beautiful Soup(取得したWebページをパースする)
・Selenium(Webページの取得やデータ解析ができる)
今回は、requestsライブラリとBeautiful Soupライブラリのみを使用した記事になるので、Seleniumは次の機会でお話しさせて頂きます。
それでは、まずはRequestsライブラリを使って、簡単なスクレイピングを行ってみましょう!
3-2. Requestsライブラリを使ったスクレイピング
前回インストールした、Anaconda Navigatorを使ってJupyter Notebookを起動しましょう。
まずは今回使用するRequestsライブラリをインストールしないといけないので、Jupyter Notebook上で下記コマンドを入力し、Runボタンを押下して下さい。
pip install requests
これでJupyter Notebook上にRequestsライブラリがインストールされたので、次にRequestsライブラリを認識させるために下記コマンドを入力し、Runボタンを押下してください
import requests
上記2つのコマンドを実行することで、
①Jupyter NotebookにRequestsライブラリがインストールされた
②Jupyter NotebookにRequestsライブラリが認識された
次に、どのWEBサイトの情報を収集するかを指定するため、下記コマンドを入力してください。
※Runボタンは未だ押さないでください
r= requests.get(URL)
上記コマンドはを解説すると、"r"という変数にrequestsライブラリが持つgetメソッドを使って、該当URLから情報を取得しています。
"URL"部分は、現在は変数部分となっていますが、文字列として直接指定することも可能となっております。(下記はgoogleのURLを記載する場合)
r= requests.get("https://www.google.com/?hl=ja")
これで、"r"という変数にgoogleトップページの情報が保存されたので、下記コマンドを入力し画面上で確認してみましょう。
print(r.content)
上記コマンドを入力すると、画面上には下記画像の様な英語の羅列が出力されていると思います。
拒否反応が出た方が大勢いらっしゃると思いますが、これは画面情報をHTML形式で取得した結果となのでご安心ください!
まずは今回使用するRequestsライブラリをインストールしないといけないので、Jupyter Notebook上で下記コマンドを入力し、Runボタンを押下して下さい。
pip install requests
これでJupyter Notebook上にRequestsライブラリがインストールされたので、次にRequestsライブラリを認識させるために下記コマンドを入力し、Runボタンを押下してください
import requests
上記2つのコマンドを実行することで、
①Jupyter NotebookにRequestsライブラリがインストールされた
②Jupyter NotebookにRequestsライブラリが認識された
次に、どのWEBサイトの情報を収集するかを指定するため、下記コマンドを入力してください。
※Runボタンは未だ押さないでください
r= requests.get(URL)
上記コマンドはを解説すると、"r"という変数にrequestsライブラリが持つgetメソッドを使って、該当URLから情報を取得しています。
"URL"部分は、現在は変数部分となっていますが、文字列として直接指定することも可能となっております。(下記はgoogleのURLを記載する場合)
r= requests.get("https://www.google.com/?hl=ja")
これで、"r"という変数にgoogleトップページの情報が保存されたので、下記コマンドを入力し画面上で確認してみましょう。
print(r.content)
上記コマンドを入力すると、画面上には下記画像の様な英語の羅列が出力されていると思います。
拒否反応が出た方が大勢いらっしゃると思いますが、これは画面情報をHTML形式で取得した結果となのでご安心ください!
3-3. BeautifulSoupライブラリを使ったスクレイピング
上記でrequestsライブラリを使ったスクレイピングを行いましたが、今回はBeautifulSoupを使い、requestsライブラリで取得したHTML情報の解析を行ってみましょう!
まずは下記コマンドで、requestsライブラリの時と同様にはBeautifulSoupのインストールを行っていきます。
pip install beautifulsoup4
無事にインストールが完了したら、次にJupyter NotebookにBeautifulSoupを認識させます。
from bs4 import BeautifulSoup
これで準備が整いましたので、いよいよ解析です!
まずは何も考えず、下記コマンドを入力してください。
url = "https://www.google.com/?hl=ja"
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")
print(soup.select("p"))
ソースコードを順番に解説していきます。
①url = "https://www.google.com/?hl=ja"
任意で作成した“url”変数に、解析したいWEBページのURLを代入しています。
②r = requests.get(url)
requestsメソッドを活用し、該当ページのHTML情報を取得し、”r”変数に代入
③soup = BeautifulSoup(r.content, "html.parser")
BeautifulSoupを使い、取得したWEBページの情報を解析、代入
この段階で、soup変数には解析したWEBページの全ての情報が保管されています。
④print(soup.select("p"))
解析結果の情報から、pタグだけを画面に表示
以上が、今回のソースコードで行われている処理の内容です。
まだイメージがフワッとしている方もいらっしゃると思いますが、やって行くうちに慣れてくるので、ここでは気にしなくて問題ないです!
まずは下記コマンドで、requestsライブラリの時と同様にはBeautifulSoupのインストールを行っていきます。
pip install beautifulsoup4
無事にインストールが完了したら、次にJupyter NotebookにBeautifulSoupを認識させます。
from bs4 import BeautifulSoup
これで準備が整いましたので、いよいよ解析です!
まずは何も考えず、下記コマンドを入力してください。
url = "https://www.google.com/?hl=ja"
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")
print(soup.select("p"))
ソースコードを順番に解説していきます。
①url = "https://www.google.com/?hl=ja"
任意で作成した“url”変数に、解析したいWEBページのURLを代入しています。
②r = requests.get(url)
requestsメソッドを活用し、該当ページのHTML情報を取得し、”r”変数に代入
③soup = BeautifulSoup(r.content, "html.parser")
BeautifulSoupを使い、取得したWEBページの情報を解析、代入
この段階で、soup変数には解析したWEBページの全ての情報が保管されています。
④print(soup.select("p"))
解析結果の情報から、pタグだけを画面に表示
以上が、今回のソースコードで行われている処理の内容です。
まだイメージがフワッとしている方もいらっしゃると思いますが、やって行くうちに慣れてくるので、ここでは気にしなくて問題ないです!
4. まとめ
いかがだったでしょうか?br>br>
WEBページの情報を収集する。と聞くと敷居が高いような、難しいような印象を受ける方が多いかもしれませんが、たった数行のソースコードでスクレイピングは実現可能だとご理解いただけたと思います。br>br>
もちろん、より複雑なスクレイピングをやろうと思えば、多くのソースコードを書く必要があります。br>br>
ただ、前回の記事で紹介したように、WEB上にはありとあらゆる情報が散らばっているので、調べれば意外とすんなり行くこともあるかもしれません。br>br>br>
調べる際のコツとしては、日本語でも良いですが英語ベースで調べるクセを早い段階からつけておくことを強くお勧めします。br>br>
最新技術などは、先ずは英語ベースで発信され、翻訳されて初めて日本語になります。br>br>
全ての情報を翻訳してくれる仏の様な方が居れば良いですが、実際日本語に直されるドキュメントはごくわずかです。br>br>
なので、早い段階から英語で調べる癖をつけておくことはスクレイピングに限らず、IT業界で生きていく上では、かなりの武器になると思います。