マラソンレビュー分析

pythonによるwebスクレイピングをしテキストマイニングによって傾向を分析する。

1.環境構築

今回使用したPCのスペック、OS

・MacBook Pro(2017,Two Thunderbolt 3 ports)

・MacOS-Catalina

macでは標準でpythonがインストールされている。しかし標準でインストールされているpythonはバージョンが古いという問題点がある。ターミナルに

python --version

と入力したところ

Python 2.7.16

と表示された。今回参考にした文献はpythonの3系だったので以下の手順でpythonのバージョンが3から始まるものをインストールした。

・「Homebrew」のインストール

pyenvを用いてPythonをインストールするためにHomebrewというツールをインストールした。ターミナルで以下のコマンドを実行した。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebr
ew/install/master/install)"

・「pyenv」のインストール

pyenvがインストールされているかの確認

pyenv -v

すると、pyenv: command not foundと表示されたのでpyenvがまだインストールされていないことが確認できた。ターミナルで以下のコマンドを実行した。

brew install pyenv

再び、インストールができているかの確認をした。ターミナルで以下のコマンドを実行した。

pyenv -v

その結果、

pyenv 1.2.20

と表示されたのでインストールできたことが確認できた。

・「Python」のインストール

現在インストール可能なpythonのバージョンを調べた。ターミナルで以下のコマンドを実行した。

pyenv install --list

その結果、

スクリーンショット 2020-07-28 16.36.44

現在インストール可能なバージョンが表示されたので比較的新しいpython3.8.5をインストールした。

・「Anaconda」のインストール

(・「requests」ライブラリのインストール)

(・「BeautifulSoup」ライブラリのインストール)


【Google Colaboratoryでの実験】

・Google Colaboratory -Pythonのプログラムをクラウド環境で実行できる。(Pythonのバージョンは3系を使用。

手順

①BeautifulSoupのインポート

from bs4 import BeautifulSoup

②requestsのインポート

import requests

③HTMLの所得

urlName = "https://runnet.jp/report/raceDetail.do?command=page&raceId=232993&userNumber=8514058&sortIndex=0&typeId=&pageIndex=0#search_result"
html = requests.get(urlName)

④HTMLの初期化

soup = BeautifulSoup(html.comtent,'html.parser') #HTMLをインデントして出力 
print(soup.prettify())

⑤要素の取り出し

titleのタグのついた要素を取り出す
soup.title


 #出力結果 
<title>大会レポ - レポート&評価・京都マラソン20202020年)</title>

このままだとタグが表示されているので、以下の出力をする。

print(soup.title.string)

すると、以下のように文字列のみで表示される。

 #出力結果 
大会レポ - レポート&評価・京都マラソン20202020年)

find_allメソッドによるクラスとタグを指定して要素を取り出す

soup.find_all('p', class_ = 'comment')

複数のURLの取得

print(urlName)
number = 0
for i in range(3):
 print('https://runnet.jp/report/raceDetail.do?command=page&raceId=232993&userNumber=8514058&sortIndex=0&typeId=&pageIndex='+ str(number) +'#search_result')
 number = number + 1

出力すると

https://runnet.jp/report/raceDetail.do?command=page&raceId=232993&userNumber=8514058&sortIndex=0&typeId=&pageIndex=0#search_result
https://runnet.jp/report/raceDetail.do?command=page&raceId=232993&userNumber=8514058&sortIndex=0&typeId=&pageIndex=0#search_result
https://runnet.jp/report/raceDetail.do?command=page&raceId=232993&userNumber=8514058&sortIndex=0&typeId=&pageIndex=1#search_result
https://runnet.jp/report/raceDetail.do?command=page&raceId=232993&userNumber=8514058&sortIndex=0&typeId=&pageIndex=2#search_result

4ページ分のURLが取得できた。これを利用し以下のコードで取得したURLの要素をページ数分取り出した。

 #1 ~3ページ目まで
urlNumber = 0
for i in range(3):
 html = requests.get('https://runnet.jp/report/raceDetail.do?command=page&raceId=232993&userNumber=8514058&sortIndex=0&typeId=&pageIndex='+ str(urlNumber) +'#search_result')
 urlNumber = urlNumber + 1
 soup = BeautifulSoup(html.content,'html.parser')
 print(soup.find_all('p', class_ = 'comment'))

出力すると

[<p class="comment clearfix">
<!-- 写真 -->
<img src="/images/report/user/232993_8514058_r_img_pc_S.jpg" width="168px"/>
<!-- 写真 -->
					他のマラソン大会がコロナ防止のため軒並み中止となる中で、ギリギリ間に合ったようでスタッフのご苦労がひしひし感じられました。ありがとうございました。<br><br>コースは観光地巡りで楽しく、応援の人たちも途切れることなく、ずっと背中を押していただきました。

				</br></br></p>, <p class="comment">
						他のマラソン大会がコロナ防止のため軒並み中止となる中で、ギリギリ間に合ったようでスタッフのご苦労がひしひし感じられました。ありがとうございました。<br><br>コースは観光地巡りで楽しく、応援の人たちも途切れることなく、ずっと背中を押していただきました。

					</br></br></p>, <p class="comment">
						この大会以降は悉く中止になっていることを踏まえると走れてよかったと思います。ただ、雨で景色を楽しむことが全くできなかったので来年以降天気のいい日に走りたいです。<br/>賛否両論ある鴨川河川敷ですが、今年のように雨でぬかるむようなときは勘弁してほしいというのが正直なところでした。<br/>参加賞のマルチウェイカバーの使い道に困っていたのですが、最近になって日々のランニングに大変重宝させていただいております。

					</p>, <p class="comment">
						景色も楽しめて充実したコースでした。PB更新出来ました。<br/>より良い大会にする為には、河川敷のドロドロコース対策。<br/>ドロドロを避けてコース幅から半分くらいになり危険でありペースダウンします。舗装されたコースに変更するのは認定コースですから無理なら河川敷の幅を広げるのはどうでしょうか?<br/>あとペーサーの位置が見つけ易くして欲しい。バルーン等で目立つ工夫は如何でしょう?

					</p>, <p class="comment">
						京都のいろんなところを周り、普通の観光ではとても1日では回れないところをたくさん楽しめる大会でした。京都は観光でいろんなところに行っていましたが、走ってみると意外にアップダウンが有るのだなと知ることができました。また、沿道の応援はコロナの問題や悪天候の影響があっても、とても良かったです。特に仁和寺の応援は想像以上でした。<br/>ただ、少し残念だったのは、賀茂川河川敷のコースは、天気が雨だったこともあり、コースがぬかるみだったり、コース幅も狭く、終盤走者が歩いたり走ったりとスピードが様々な状態では、特に走り難くかったです。賀茂川河川敷も京都マラソンの魅力の1つとして参加したのですが、何か工夫が必要と感じました。

					</p>, <p class="comment">
						京都らしさがちりばめられている、とても楽しい大会です!<br/>大会初の雨開催でしたが、そんなの全く気にならなかったです。<br/>景色も雨で靄ってましたが、それがかえって風情がありました。<br/><br/>給食もおたべや抹茶パン、鼓月さんの姫千寿せんべいなど、郷土色たっぷりで楽しめました!<br/><br/>コロナ、雨の中にもかかわらず、沿道には沢山の応援の方々が!<br/>感動しました。<br/><br/>河原町丸太町交差点はもうすごい応援で、一番きつい時、元気をもらいました。<br/><br/>私達がこうして安全に楽しく走れたのは、ランナーとほぼ同数のボランティアの方々のおかげです。<br/>最高に楽しかったです、ありがとうございました!<br/><br/>エキスポも最高!<br/><br/>また来年、今度は妹とペアマラソンでます。

					</p>]
[<p class="comment clearfix">
<!-- 写真 -->
<img src="/images/report/user/232993_8514058_r_img_pc_S.jpg" width="168px"/>
<!-- 写真 -->
					他のマラソン大会がコロナ防止のため軒並み中止となる中で、ギリギリ間に合ったようでスタッフのご苦労がひしひし感じられました。ありがとうございました。<br><br>コースは観光地巡りで楽しく、応援の人たちも途切れることなく、ずっと背中を押していただきました。

				</br></br></p>, <p class="comment">
						もっと良く、もっと楽しめたと思う。

					</p>, <p class="comment">
						あいにくの雨でしたが、素晴らしい大会でした。地元銘菓の給食もよかったです。これからも参加したい大会です。スタッフの皆様、ありがとうございました。

					</p>, <p class="comment">
						昨年に続き2回目の出場でした。<br>今、思い返せば新型コロナウィルスの相次ぐ大会中止前の最終レースだったです。<br>昨年にはなかった物々しい警戒の素でしたがボランティアさんのお陰で楽しく1日走りきることができました。<br/><br/>完走メダルも京都らしいもので嬉しかったです。

					</br></br></p>, <p class="comment">
						坂が多く、折り返しが多いのでなかなか自己記録更新は難しいコースではあると思うが、ここで頑張れたらかなり自信になると思う。気温は味方になってくれる。

					</p>, <p class="comment">
						3回目の京都は雨。ただレース中はそれほど激しい降りはなく、気温と相まってそれなりに走りやすいコンディションだった。アップダウンがきついのも、鴨川の河川敷がドロドロなのも全て想定内。ウダウダ文句を言っているランナー達はどれだけの準備をして京都Mに臨んだのだろうか。京都はタイムが出にくいと言われるが、自分はPB出せました。素晴らしい大会です。<br/><br/>あえてマイナス点を挙げるならコース誘導が一部バタついていた(最短距離を突然ふさがれる、いやランナー走って来てるやん、ちゃんと見てないの?)箇所あったこと。あと、エコを謳っているのに事前に大量の紙ゴミ(チラシ)を送り付けて来るのはもうそろそろやめにしたほうがよい。

					</p>]
[<p class="comment clearfix">
<!-- 写真 -->
<img src="/images/report/user/232993_8514058_r_img_pc_S.jpg" width="168px"/>
<!-- 写真 -->
					他のマラソン大会がコロナ防止のため軒並み中止となる中で、ギリギリ間に合ったようでスタッフのご苦労がひしひし感じられました。ありがとうございました。<br><br>コースは観光地巡りで楽しく、応援の人たちも途切れることなく、ずっと背中を押していただきました。

				</br></br></p>, <p class="comment">
						3回目走らせてもらいました!他の大会では、まったく当選していないので、何か縁があると思っています。コロナウィルスの影響で、開催されるかどうか不安でしたが、開催頂きありがとうございました。私が、この大会以降にエントリーしていた大会は、すべて中止or延期になってしまいました。改めて、大会が開催されること、走れることが、幸せなことだと実感しています。<br>雨予報及びコロナウイルスの関連で厳しい状況でしたが、スタッフの皆様、応援の皆様、出場させてくれた家族、皆ありがとうございました。<br>個人的には、快晴だと脱水気味になってしまうのですが、今回はわずかな雨or曇りの状態でゴールまで走ることができ、コースベストを出すことができました。また、ぜひ走りたいです。

					</br></br></p>, <p class="comment">
						地元の京都を走らせて頂く貴重なレースでした。普段見る光景とはまた違った角度から京都の街を堪能することができ、とても楽しいレースでした!

					</p>, <p class="comment">
						待機の時は雨でしたが、スタートしてから止んで快適に走れました。<br/>コロナウイルス騒ぎの前で開催できてよかったですね。<br/><br/>エイドも楽しめました。<br/><br/>家族ともいけて、京都観光もできて良かったです。

					</p>, <p class="comment">
						コロナの中止続出の寸前、走れてよかったです。<br/>ただ、スタート直前までは雨、更衣室で雨宿りする人でかなり手狭でした。<br/>お疲れ様広場での白味噌汁は美味しいけれど、ぬるすぎてもう少し熱くして。

					</p>, <p class="comment">
						11月のフルマラソン。時間制限をクリアーできなかったので、今回は完走目指しました。完走できて良かったです。

					</p>]

タグ付きではあるがレビューのコメントを取得できた。

スプレッドシートに取得




なぜRUNNETなのか、他サイトとの比較(論文引用する









この記事が気に入ったらサポートをしてみませんか?