その他

じゃらんの口コミをスクレイピングしてみる【Python】

動作環境

  • Python 3.9.2
  • pip 21.3.1
  • macOS 12.0.1

じゃらんの口コミをPythonでスクレイピングしてCSVファイルとして取得する方法をまとめています。

インストールされているPythonのバージョンを確認する

macはデフォルトでPythonは内包されているはずなので、インストールされているPythonのバージョンを確認する。

Python2は既にサポートが終了しているようなので、Python3もインストールされているかも確認します。

$ python --version
Python 2.7.18

$ python3 --version
Python 3.9.2

pipのインストール

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 2108k  100 2108k    0     0  10.1M      0 --:--:-- --:--:-- --:--:-- 11.0M

ディレクトリ配下にget-pip.py ファイルが作成されていれば成功です。

さらにget-pip.py ファイルが作成されているディレクトリ上で下記のコマンドを実行する

$ python3 get-pip.py
$ pip -V
pip 21.3.1 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

pipがインストールされていれば完了。

Jupyter Notebookをインストール

Jupyter Notebookとは、PythonなどをWebブラウザ上で記述・実行できる統合開発環境です。

$ pip install jupyter

requestsをインストール

requestsとはHTTP通信用のPythonのライブラリです。主にWEBスクレイピングでHTMLやXMLファイルからデータを取得するのに使われます。

$ pip install requests

pandasをインストール

Pandasは、Pythonでデータ分析を効率的に行うためのライブラリです。データをCSVなどのデータに変換する際に使用します。

$ pip install pandas

beautiful soup4をインストール

Beautiful SoupはHTMLやXMLファイルからデータを取得するPythonのライブラリです。

$ pip install beautifulsoup4

Jupyter Notebookを起動する

$ python3 -m notebook

これを実行するとブラウザが起動するので、右上の「新規」→「python3(ipykernel)」を選択する。

コードを記述&実行

Webブラウザ上で既にpythonの実行環境は構築されているので、コードを記述して、「Run」を押すとPythonプログラムは実行されます。

口コミを取得したい宿のURL(今回はこちら→https://www.jalan.net/yad332453/kuchikomi/?screenId=UWW3001&yadNo=332453&dateUndecided=1&smlCd=340902&distCd=01)

requests.get()に貼り付けるだけです。

ページから要素を取得し、ループを回して欲しい情報をデータ化しています。

実行後、ディレクトリ配下に「じゃらん.csv」が出来ていればOKです。

pythonのコードを書くのは初めてなので、ループ処理あたりはもっと簡潔に書けるかもしれないです。

import requests
from bs4 import BeautifulSoup
import pandas

r = requests.get("https://www.jalan.net/yad332453/kuchikomi/?screenId=UWW3001&yadNo=332453&dateUndecided=1&smlCd=340902&distCd=01")
c = r.content

soup = BeautifulSoup(c, "html.parser")

body=soup.find_all("p",{"class":"jlnpc-kuchikomiCassette__postBody"})
date=soup.find_all("p",{"class":"jlnpc-kuchikomiCassette__postDate"})
score=soup.find_all("div",{"class":"jlnpc-kuchikomiCassette__totalRate"})

l=[]
for d, b, s in zip(date, body, score):
    data={}
    data["スコア"]=s.text
    data["口コミ"]=b.text
    data["投稿日"]=d.text.replace('投稿日:', '')
    l.append(data)

df=pandas.DataFrame(l)
df.to_csv("じゃらん.csv", encoding='utf_8_sig')
df

以上です。

  • この記事を書いた人

コウダイ

文系・ノースキル・未経験・アラサー・地方住み・残業100時間超えの社畜ホテルマンから都内IT系上場企業のフルリモートWebエンジニアに転職した人。

都内IT系上場企業に勤務するWebエンジニア5年目|プログラミングスクールのテックキャンプ公式アンバサダー|新卒で手取り18万の地方ホテルマン6年→挫折→プログラミングを900時間勉強→転職活動100社以上応募→アラサー未経験から7ヶ月でフルリモートのWebエンジニアに転職し年収150万円UP|34歳2児のパパ|ブログ歴4年→月間6,000PV|エンジニア転職ノウハウ、プログラミング、Web制作、副業での稼ぎ方など、「時間や場所に縛られずに稼ぐ」方法を発信しています。

-その他