【解析】シャドバの戦歴データを取得&解析して、色々やってみる記事①
シャドバで学ぼう。ウェブスクレイピング・基本統計量
へちやぼらけです。ポケモンデータ解析.pyって知ってる人いますか?
基本統計量並び、回帰分析、クラスタリングなどを学べる神サイトである。俺も、この真似事をしたいと思い記事を書いた。
興味ある方、付き合ってくれ。この記事で「ウェブスクレイピング」に触れ、次回の記事で「基本統計量」、最後の記事で「時系列解析」を扱ってお終いにしようと思う。
ウェブスクレイピングをそもそも知らないという方は、以下の記事を参照して欲しい。
ウェブスクレイピング
ウェブスクレイピングだ。
シャドバのデータを解析していく訳だが、解析に使うデータが無ければ何も始まらない。ウェブスクレイピングを使って、データを取ってこようではないか。
俺が目を付けたサイトは、Shadowverse Logというサイトである。ここには2018年1月~今に至るまでの、各クラスごとの「勝率」「使用率」などが掲載されている。
同サイトをポチポチとサーフィンすることで、URLの法則性を見つけることができた。下の画像を見て欲しい。↓↓↓↓↓↓
単純ですね。今回、重要なのはURLの「・・・2018/1・・・r」の部分。2018/1で、2018年1月1週目の戦歴データを取得することが出来るようだ。そこから、2018/2, 2018/3, ‥, 2018/80 などと数を増やすことで、各週ごとの戦歴データをスクレイピングできそうだ。
同サイトのHTMLソースはこんな感じ↓↓。table id ='table1'、class='pie-analyze-list'の部分に、勝率、使用率などが定義されているらしい。
さて、頑張ってウェブスクレイピングプログラムを作りました。こんな感じである。(動作確認済。※同サイトのサーバー負荷&このページをご覧になってる”あなた”&”筆者(自分)”の3者を守るため、正直皆さんには気軽に下記プログラムを実行して欲しくは無い。というのが本音だったりもする…。)
#インポートする。
import urllib.request #webにアクセスする際、必要。
import bs4 #主役!
import numpy as np
import pandas as pd
from time import sleep #適宜、休憩を入れ、サーバーへの負荷軽減。
# パラメータ定義 y_START = 1 y_END = 82 url_N = 'https://shadowlog.com/trend/2018/'
#ローテーションのデータを取得する。 df_seiseki_allyear = []
# クローリング&スクレイピング開始
for i in range(y_START , y_END + 1):
sleep(60) #※re はfor文で複数回使えない。毎回初期化する。 import re #↓URL名を指定 ↓数字を文字列に (#0=合計、4=マスター、3=AA、2=A、1=B) url = url_N + str(i) + '/0/r' response = urllib.request.urlopen(url) root = bs4.BeautifulSoup(response.read()) data = [] # ↓HTMLで、tableかつCSSが"pie-analyze-list table1"であるもの。 for pick in root.find_all("table", class_="pie-analyze-list table1"): for match in re.findall(r"<td(.*?)</td>", str(pick)): #findした文字列から、欲しいデータを取得する。(インデックスの細かい調整で愚直に対応・・) if match[0:6] == " align": if match[16:20] == "<b><": temp = match[45:].replace('<b>', '') temp = temp.replace('</b>', '') temp = temp.replace('</span>', '') data.append(temp) else: temp = match[16:].replace('<b>', '') temp = temp.replace('</b>', '') data.append(temp) else: #クラス名。 data.append(match[112:115]) seiseki = np.array(data).reshape(int(len(data)/7),7) df_seiseki = pd.DataFrame(seiseki) df_seiseki.columns = ["クラス","使用率","使用数","勝利数","勝率","先攻勝率","後攻勝率"] df_seiseki['year'] = i #ループの度、アペンドしていく。 df_seiseki_allyear.append(df_seiseki)
まぁ、何のひねりも無いウェブスクレイピングPGMです。'https://shadowlog.com/trend/2018/'+数字でクローリングしながら、BeautifulSopuで、HTMLから必要なデータのみ収集していきます。
ちなみに、クローリングする際は同サイトの負荷にめちゃくちゃ気を使った。クローリングって、度が過ぎるとサーバー攻撃と勘違いされかねない。上のコードではsleep関数を使って、60秒ごとにページを遷移する様に設計した。これなら、普通のweb閲覧と遜色無いはずだ。
皆さんもクローリングする際は要注意だ!
◇コード解説
はい。ということで、同PGMについて細かく解説していきます。
〇最初(インポート部分)
#インポートする。 import urllib.request #webにアクセスする際、必要。 import bs4 #主役! import numpy as np import pandas as pd from time import sleep #適宜、休憩を入れ、サーバーへの負荷軽減。
ライブラリは上記のモノを使用する。numpy, pandasはいいですよね…。データを扱うのに必要なライブラリ・モジュールです。
urllib.requestとは、webからデータを取得するためのモジュール。bs4は、webスクレイピングする際、必須とも言えるべき便利なライブラリー。こいつを使えば、簡単にHTMLを取得することができます。
〇パラメタ定義
# パラメータ定義 y_START = 1 y_END = 82 url_N = 'https://shadowlog.com/trend/2018/' #ローテーションのデータを取得する。 df_seiseki_allyear = []
続いて、パラメタ定義部分。y_START, y_ENDはクローリングするデータのURLの始めと最後を現しております。y_START「1」から始まり、2,3,4,5,‥と1ずつカウントアップしていきながら、y_END「82」に至るまでfor文のループを回し続けます。
カウントアップする数は、クローリングするURLの1部分として使うよ。クローリングの際、共通で使うURLの文字列は、url_Nで定義しています。
さて、それでもって、各週の「勝率」「使用率」を取得する。そのデータはdf_seiseki_allyear に逐次的に保存していきます。(ちなみに、df_って書いてますけど、array型ですねこれ。)
何を言ってるんだコイツ?と思われた方。安心してください。以降のプログラムを見れば、筆者の言いたいことがわかります。
〇クローリング部分
# クローリング&スクレイピング開始 for i in range(y_START , y_END + 1): sleep(60) #※re はfor文で複数回使えない。毎回初期化する。 import re #↓URL名を指定 ↓数字を文字列に (#0=合計、4=マスター、3=AA、2=A、1=B) url = url_N + str(i) + '/0/r' response = urllib.request.urlopen(url) root = bs4.BeautifulSoup(response.read()) data = []
y_START「1」から始まり、2,3,4,5,‥と1ずつカウントアップしていきながら、y_END「82」に至るまでfor文のループを回し続けます。
ループの度にsleep(60)で、60秒待機。サーバーへの負荷を軽減します。アクセスするurl名は、url_N ('https://shadowlog.com/trend/2018/')に、y_START「1」からカウントアップする数字を足す。その後、'/0/r'を付けたモノです。
要するに、https://shadowlog.com/trend/2018/1/0/r'~https://shadowlog.com/trend/2018/82/0/r'までのURLにアクセスしていきます。
urllib.request.urlopen(url)は、http.client.HTTPResponseのオブジェクトが返されます。そのオブジェクトをresponseに保存させます。(良くわからなくてもOK。URLにアクセスするための入場許可証みたいなモンだと思って下さい。)
次に、root = bs4.BeautifulSoup(response.read())でrootに読み込ませたHTMLデータのルート要素を取得します。
変数rootを使えば、指定したURLのHTMLの先頭~最後まで不可逆的にサーチすることができるんです。
〇スクレイピング部分
変数rootを使えば、指定したURLのHTMLの先頭~最後まで不可逆的にサーチすることができるんです。ただ、HTMLの先頭~最後まで全部欲しい訳ではありません。私の目的は、クラスごとの「勝率」「使用率」を取得することです。
ということで、欲しいデータを取得するために、欲しいデータの付近にあるHTMLを確認します。
確認した結果、table id ='table1'、class='pie-analyze-list'の部分に、勝率、使用率などが定義されているらしい。
ということで、プログラムを以下の様に作成した。
# ↓HTMLで、tableかつCSSが"pie-analyze-list table1"であるもの。 for pick in root.find_all("table", class_="pie-analyze-list table1"): for match in re.findall(r"<td(.*?)</td>", str(pick)): #findした文字列から、欲しいデータを取得する。(インデックスの細かい調整で愚直に対応・・) if match[0:6] == " align": if match[16:20] == "<b><": temp = match[45:].replace('<b>', '') temp = temp.replace('</b>', '') temp = temp.replace('</span>', '') data.append(temp) else: temp = match[16:].replace('<b>', '') temp = temp.replace('</b>', '') data.append(temp) else: #クラス名。 data.append(match[112:115])
root.find.all(xxxxx)関数では、HTMLの先頭からサーチしていき、引数に設定した文字列にヒットした場合にその部分のHTMLを返します。上述の通り「勝率」「使用率」は、table id ='table1'、class='pie-analyze-list'の部分に定義されているので、for pick in root.find_all("table", class_="pie-analyze-list table1"):と記述すればOKだ。
試しに、URL=「url_N + "50" + '/0/r'」として、root.find_allでちゃんと該当のHTMLを取得できているか確認だ。
いい感じに取得できてますね。ただ、それにしても不要なデータが多すぎる。ここから、「勝率」「使用率」をピンポイントで取得しなければならない。筆者は、ここで正規表現(re)を使うことにした。「勝率」「使用率」は、<td>・・・</td>の中に定義されているようだ。
for match in re.findall(r"<td(.*?)</td>", str(pick)):により、更に<td>の中にある文字列のみ取得する様にしたぞ。
さて、取得した文字列を確認してみよう。↓↓↓
おお、いい感じ。後は、取得した文字列の何文字目から何文字目までを取得するかプログラムで指定してあげればOK。
取得したデータを確認!
てな感じで取得したデータを、ちょっと整理整頓してエクセルに落としてみたよ。こんな感じです。
いいすね。以降の記事では、取得したデータを使って、pythonで解析していきます。お楽しみに。
【スマホ電子決済】GooglePayが超便利で今すぐ使えるのに、使ってない奴おるか??
GooglePay=キャッシュレス決済の最高峰
お疲れ様です。
へちやぼらけです。
GooglePayを使ってみた。最初に言わせて。これ最高。便利性・可用性、どれをとってもピカ1だ。今回はGooglePayの魅力を伝えるべく記事を書く。
◇GooglePayとは?
GooglePayとは、端的に言えば「スマホで出来る電子決済」。これをまとめて管理できる神アプリだ。同アプリを使えば、主要な電子決済アプリ『モバイルSuica』,『iD(アイディー)』,『QUICPay(クイックペイ)』などを一瞬で使えるようになれる。
そうなんだよ!可用性がめちゃくちゃ高い。スマホ&GooglePay&クレジットカードがあれば、今すぐにでも主要な電子決済をスマホで使うことができるのだ。俺は、5分で『iD』に登録することができた。今では、楽々スマホで電子決済生活。
俺はGooglePayに『iD』と『Suica』の2つを登録しているので、電車にもスマホで乗車することができるんだぜ。
小銭でじゃらじゃら・チンタラ決済してる人を見るとイライラしてくるぜ。こんな便利なアプリがあるのに電子決済にしない奴は、はっきり言ってダメだ。それぐらい、今すぐにでもスマホで電子決済ができるようになるってわけ。
◇GooglePayの使い方
とは言ったものの、GooglePayの使い方を紹介しているブログが少ない。ということで、俺がGooglePayの使い方を簡潔にまとめる。
①スマホを開け!
まずは、スマホを開こう。アンドロイドの最新スマホだとGpay(GooglePay)はデフォルトでインストールされているはず。無い方は、下のリンクからインストールしよう!
残念ながら、お財布ケータイ対応のAndoroid端末でないと同アプリは使えないらしい。iphoneの方は申し訳無い。またNFC搭載型のスマホも使えないらしい。申し訳ない。
②Gpayから電子決済登録。
そしたら、GooglePayを開こう(グーグルアカウントを持ってない方は、アカウントを作る必要がある)。そこから、君の登録したい電子決済アプリを登録するんだ。ざっくり分けると、クレジットカード登録が不要で作れるアプリ(楽天Edy, nanaco, WAON, Suic)と、クレジットカード登録が必要なアプリ(QUICPay, iD)の2種類に分かれている。
やはり個人的にオススメしたいのが、クレジットカード登録が必要なアプリ。その中でも、使える店舗数の多い『iD』だ。自分はクレジットカードがiD対応だったということもあり、早速iDを作成した。
iDに登録できないクレジットカードもあるので要注意。下のリンクから、メリットデメリットを把握して「どの電子決済が良いか?」良く検討しよう。
ていうか、↑のサイトにGPayに関する情報がしっかりまとまっているな。使う際は、↑の記事を参考にした方が良さそうだ…。
ちなみに、クレジットカードの番号は画像認識から取得することが可能。カメラにクレジットカードをかざすだけで、自動で入力の手助けをしてくれるぞ!
例えば「iD」の登録が完了したら下の様な画面になる。
iDとそれに紐づくクレジットカードが表示されてるはずだ。
③後はスマホをかざすだけ。
ここまで出来たら準備完了。後は、登録した電子決済が可能なお店に行き、レジで支払う時に「〇〇で決済お願いします。」と言えばOK。スマホをレジの読み取り部分に接触させよう。スマホの電源さえ切れてなければ問題無い、スマホ側で特別な操作は不要だ。
スマホの読み取り部分は、上部のカメラ部分にあるらしい。自分も初心者なので確信を持てないが恐らくあってる。
◇購入履歴も管理
「クレジットカードからの支払だとお金を使い過ぎてしまいそう…。」とお考えの方。多分それは間違いかもしれない。個人的には、GoolePayで支払った方がお金の管理がちゃんとできると思う。その理由は、GooglePayの購入履歴。支払った金額が履歴として表示されるのだ。
これは便利だ。
当たり前かも知れないが、電子決済をスマホで利用する際は個人責任でお願いします。自分は問題なく使用できているので大丈夫だと思うが、「スマホがおかしくなった」「お金が不当に引き出された」等、一切の責任を負いかねますのであしからず。
【また改訂?】Youtubeの規制強化が止まらない??
厳しすぎないか?Youtubeのテレビ化が止まらない!
お疲れ様です。
へちやぼらけです。
Youtubeの規制強化が止まらない?
2019年6月にyoutubeの規約が改訂された。正確には、「広告掲載に適したガイドライン」という項目に一部訂正が入った。Youtubeに広告を付けられる動画の基準が変更になったという訳だ。気になる方は、下にリンクを張ったので見て欲しい。
文章読むのが面倒な方は、下の画像を見てもらえればOKだ。端的に言えば広告掲載に適さないトピックが、以下11項目となった。
物申す系youtuberシバターさんが、2019年7月15日に投稿した動画『
だが、実際には「差別的なコンテンツ」「炎上目的、侮辱的」の記載については、ポリシーに変更は無く、今までの基準と同様にジャッジするとのこと。
実際は、タバコ・銃器に関連するコンテンツが広告掲載に適さないコンテンツとして追加された形だ。
さて。タバコ・銃器に関連するコンテンツが広告掲載に規制が入るのは良しとして、今一度、「差別的なコンテンツ」「炎上目的、侮辱的」の部分。これら項目の詳細を確認してみよう。リンクをクリックすれば、細かな記載を見ることができる。
◇差別的なコンテンツ
憎悪を煽る、差別を助長する、あるいは誹謗中傷するコンテンツに広告規制が入っているようだ。
◇炎上目的・侮辱的
炎上を招く、他者を侮辱するコンテンツ。嫌がらせ、威嚇、いじめに当たるコンテンツに広告規制が入っているようだ。
◇大丈夫??
ガイドラインを見る限り、Youtubeは自由な動画を投稿できるプラットフォームではない。初期のyoutubeには表現の自由があった気がするのに、ドンドン規制が強くなってる。今の状況、正直怖いよな。これ、考え方によっては「言論統制なのでは?」とも思う訳です。
誹謗中傷・侮辱・威嚇がダメ?これ、誰が決めるん??。Youtube側の独断と偏見だよね?
国会中継の様子もYoutubeに上がっているが、かなり厳しめの口調で攻めているものもある。これもダメか?間違った思想や考え方にNOを突きつける。程度によっては、Youtubeの判断により規制される。いや~怖いは~。
このまま、規制がドンドン強化されたら「優しい言葉だけが飛び交う」キッズ向けのアプリになってしまうのではないか?自分は、今のYoutubeが好きだから、こんなのは絶対嫌だ。
配信者全員が「商品紹介」して「美味しい~(にこにこ)」「皆、最高、大好きだよ」みたいな、背中が痒くなるような動画ばっかりになったら、絶対youtube見ないは。
一番利用者の多い動画プラットフォーム”Youtube”。トップとしての懐の広さを見せて欲しい。
【見たい動画しかない】メンタリストDaiGoのyoutubeチャンネルが興味深い
恋愛、仕事、友人関係に関する論文を紹介。正直『興味』しかない。
お疲れ様です。
へちやぼらけです。
Vtuberやってる社会人です。
テレビタレントのyoutube進出をウォッチする「へちやぼらけ」。今回は、メンタリストDaiGoさんのyoutubeチャンネルを紹介します!
◇メンタリストDaiGo
名前:DaiGo(ダイゴ)
年齢:30代
出身大学:慶応
職業:youtuber、パフォーマー
YouTube:メンタリスト DaiGo - YouTube
メンタリストDaiGoはテレビから有名になった方。「人の心を読める人」として、2011年頃からテレビに多く出演。2019年7月現在、32歳なのでテレビに出演し始めたのは20代か…。
彼は、人の仕草や発言から人の心理を読み解くのが得意で「マジシャンかよ?」とツッコミたくなるほど、相手の行動を正確に予測する。
大学は慶応。専攻は心理学かな?と思いきや、理工学部の物理情報工学科。同大学で、修士号まで取得されているバリバリの理系である。
はい。ということでそんなDaiGoさん。今現在、youtuberとしても活躍されている。youtuberとしても上手くいっている様子で、2019年7月現在、チャンネル登録者107万人。総再生数は1億回越えだ。
(UserLocalのYouTuberランキングより)
◇人気の秘密は?
人気の秘密は、動画で扱ってる内容が単純に面白い&興味深い。彼の投稿する動画のタイトルは「中身のない奴の見抜き方」「モテる人の会話とは?」「天才に見える話方」「病みやすい働き方」などなど。現代人が共通して抱えているであろう悩み「恋愛、仕事、友人関係、メンタルヘルス」などがメインのコンテンツとなる。
気になったら、一度彼の投稿動画一覧を覗いてみて欲しい。興味ひかれて思わずクリックしたくなる動画ばかりだ。(https://www.youtube.com/user/mentalistdaigo/videos)
タイトル名だけ聞いて「胡散臭い自己啓発の類」だと思われた方へ。彼が動画で扱う内容は、心理学の論文や研究から引用してきたものである。
しっかりとした論理と実験データに基づく論文からの引用。それ即ち「胡散臭い内容」ではなく、寧ろ「真実」なのである。論理と実験データに基づいて明らかになった「中身のない奴の見抜き方」「モテる人の会話とは?」「天才に見える話方」「病みやすい働き方」。知りたくないだろうか?
投稿する動画6~7分程度で、その間畳みかける様にしゃべりまくる。動画の情報量としてはかなり多めだ。
更に、「天才に見える話方」の動画を視聴してもらえばわかる通り、今すぐにでも実践できるものばかり。こんな為になって、しかも今すぐにでも実践できるコンテンツを投稿しているのはDaiGoさんぐらいだろう。割とマジで視聴をオススメ。
【漏洩しまくり】自分用のPCをプロジェクターに映してはいけない3つの理由
PCの予測機能があなたの性癖を漏らしまくってる。
お疲れ様です。
へちやぼらけです。
今回は、自分用のPCをプロジェクターに映すのが危ない。という件について。自分の反省の意味を込めて記事書きます。
◇自分のPCを投影するな
会議・プレゼンなどで、私物のPCをスクリーンに投影することもあるでしょう。その際は、PCに備わっている”予測機能”に要注意。
例えば、文字を打つ際の”文字予測機能”。適当に「え」と文字を打ってみましょう。こんなワード出てきませんか?
文字予測機能は、基本的に空気を読めないので、あなたが私物のPCで検索した「恥ずかしい単語」も候補に挙げてしまいます。これが、大画面のスクリーンに投影されたらゾットしませんか…。
◇厄介な予測機能とその対策
PCの予測機能って、滅多に役に立たない上に空気を読めない。本当に困った奴。
上述した”文字予測機能”は、右下の「あ」アイコンを右クリックしてプロパティを選択。文字列予測履歴を全消去しましょう。もしくは、予測機能のチェックをオフにしましょう。
多分、それでOKです。
グーグル検索にも予測機能があって、これもプロジェクタに投影するという意味では厄介。
あなたが、夜中みたエッチなサイトのリンクもしっかりと覚えています。試しにグーグル検索を掛けてみると良いです。↓はその例。
一例ですが、「の」と入力すると、エッチなサイトが候補として出てくるは、出てくるは。こんな恥ずかしいもの候補として出すなよ・・・wって感じなんですが、しょうがないです。
不要であれば、さっさと履歴を消去してしまいましょう。
【会いに来るアイドル!】踊り子系Youtuber「にこにー兄貴姉貴」を紹介する記事。
にこにー兄貴姉貴は、今日も”誰か”の家の前で踊る。
お疲れ様です。
へちやぼらけです。
今日も個人的に面白い!と思ったYoutuberを紹介しよう。今回紹介するのは「にこにー兄貴姉貴」だ。
◇にこにー兄貴姉貴
名前:にこにー兄貴姉貴
職業:配信者?
twitter: にこにー兄貴姉貴 (@Chantetsu_Ryoko) | Twitter
youtube:ちゃんてつ旅行記 - YouTube
にこにー兄貴姉貴。名前の通り、ラブライブの「矢澤にこ」のコスプレをしている男性である。彼の特技はダンス。自身のYoutubeチャンネルにて、「踊ってみた」系の動画を投稿している。
当然、踊りのクオリティは高い。彼のダンスには「女性の様な可愛らしさと、男性の様なキレのある動き」がある。
彼を端的に言い表すなら「会いに来るアイドル」。今日も誰かに向けて踊りを披露していることだろう。
〇男性なんだけど…。
自分のことをあまり語らない方で、職業・年齢等不明。彼自身曰く「女装してる普通の人」とのこと。
矢澤にこのコスプレをしている彼だが、キレイな足を持つ「女性の様な体系」。Youtubeのコメント欄には「可愛い」「足、綺麗」「なんか〇起した」など、女性として彼のことを視聴している人も散見される。
ま、踊ってる様子は確かに可愛いんですけどね。
ちなみに、素顔も「めっちゃ可愛らしい男の子」らしい。
今まで、数多くの有名yotuberの”芽”を見つけては記事にしてきた「へちやぼらけ」。これから有名になるYoutuberを見極める審美眼には自信ありだ。2019年は「にこにー兄貴姉貴」が飛躍する年になるだろう。
以上。では~。
【単純なバカ】メモの魔力を読んで、早速メモを取り始める俺。
メモの魔力を読んだ。
メモの魔力 The Magic of Memos (NewsPicks Book)
- 作者: 前田裕二
- 出版社/メーカー: 幻冬舎
- 発売日: 2018/12/24
- メディア: 単行本
- この商品を含むブログ (2件) を見る
超端的に言うと、「日常で感じたことは、メモにして文書化しよう!」という趣旨の本だ。
出版界隈では、珍しく30万部超えの売れ具合。一般に3万部売れればOKという感じの業界だから、30万部はかなり凄い。
特段書いてある内容に目新しさは無い。メモを取ることの効能とメモの取り方をツラツラと書き連ねた文章だ。
同著が何故、ここまでビジネスマンを引き付けるのか?その理由は、皆が薄々感づいていたメモの重要性。これを改めて強調してくれた点にある。
しかも、筆者の実践を元に書かれた本であり、そう言った意味で信頼性は高い。しかも、誰でも今すぐ始められる。
俺は、早速メモを取ることにした。意識高い系とバカにされそうだが、とりあえず試してどうなるか実験してみたいのだ。意味が無いと決めつけて思考停止するような人間には、なれない。