【データ収集】Webスクレイピングことはじめ
webサイトからデータとってくる単純作業を自動化(スクレイピング)していこうの巻
注意事項~具体的方法をざっくり説明するよ(5,900文字…?!?!
※
例のごとく、こうやって誰かに教える感じで書くと学習効果が高いので教える感じで書きます
調べてますが、理解に間違いあればすみません。教えて貰えるとありがたいです
スクレイピングは、鑑定業界ならどうするのが良いとかいうのはなく、方法は各自やりやすい方法でやれば、という感じであります
古い情報とかもいっしょくたにいっぱい転がってる中で、この記事書いてる2023/1/14時点でちょろっと触ってみてわかったことや躓いたことを書いていきます
※当然ながら、スクレイピング禁止されてるサイトではだめです
収集データを個人使用する場合も、著作権やマナー等注意事項を調べて軽く頭に入れるべき
あと、下記事件の概要は知っといた方がいいと思います
これがあるため、スクレイピングやる全員が、逮捕・勾留されるリスクを負っているとも言える
岡崎市立中央図書館事件 - Wikipedia
スクレイピング概要
目的
・特定のWebサイト上の欲しい情報(テキストデータ、画像データ等)を自動的に取得すること
手段
プログラムを用いて、
・ブラウザ(Chromeとか)を操作する
ex. リンクをクリックしたり、テキストボックスに文字入力したり
・HTMLソースを取得する
・取得したHTMLソースから欲しい文字列をとってくる
ex. リンク先になってるURLの取得、表示されている文字列の取得
・あと、画像等のファイルをダウンロードしたり
VBAかPythonかはたまたその他言語か
結論: どれでもよ◎(迷ったらPythonか)
自分はPythonで始めたので、ここではPythonでやる場合について書きます
Excel士の人の場合、なんでもExcelに取り込んでVBAで操作するのが馴染みあるかと思うのですが、自分の場合は、VBA少しだけ書いてみたらJava経験あるプログラミング初心者には書きづらく…
取り込んだデータをあっちゃこっちゃ加工・分析するのにはPythonが良く、記述がとても簡潔で、Webや書籍に情報がたくさんあるので、Pythonでやることにしました
VBAでもPythonでも「Celenium」というライブラリを使ってGoogle Chromeを操作するのが一般的だと思います
※ VBA単体ではIEの操作はできてたけど、2022年でサポート終了した
必要なライブラリ
以下のライブラリをPythonの仮想環境にインストールして始めます
その他のライブラリは必要に応じて適宜
・Helium - Celeniumのラッパーライブラリ
Celeniumとは、ブラウザ操作するためのものだよ(HTMLソースの一部取得とかもできるけど、それは後述のBeautiful soupでやったほうがいいっぽい)
HeliumインストールするとCeleniumも入ってるし、Celeniumのメソッドとかもだいたい使えるからHelium入れといて損は無い
Celeniumより簡潔に書けるところがあるので、結局Celeniumのメソッド使うところも多々あるものの、積極的に使っていきたい
可読性も良い
Heliumについては、日本語の情報が少ないが、以下のサイトを読む。
まずここ
zenn.dev
公式
selenium-python-helium.readthedocs.io
CeleniumやBeautiful soupそれぞれの使い所。どうやって記述するかの参考になる
su-gi-rx.com
・Beautiful soup4
取得したHTMLソースから特定の文字列を抽出(抜き出したり)するやつ
「pip install bs4」でインストールできちゃったけど、正式なのは「beautifulsoup4」でした。危なかった…ちゃんと調べないと
pip install beautifulsoup4
※IDEについて
「PyCharm」使ってます
Python専用で使いやすいです
大学生だと無料で使える
※仮想環境について
Pythonでは、まず仮想環境を作成し、それに上記ライブラリ(Celeniumとか)を適宜インストールし、そこでプログラムを実行します
方法
1.Chromeを立ち上げてドライバオブジェクト取得
Heliumのstart_chromeメソッド一発。戻り値にドライバ。
※
Chromeの操作をする場合、Chrome DriverとChrome本体それぞれのバージョンを合わせる必要がある。
基本的にはHeliumのインストール時にChrome Driverもついてくるので、なんもしなくてもいけることもあるらしいが、私はエラー出てだめだった。
実行してエラー出る場合、以下から、自分の使ってるChrome本体と同じくらいのバージョンのChrome Driverをゲットして、どこかにおいて、Pathを通す。または、Heriumインストール時に元々入ってたChrome Driverと置き換える。
chromedriver.chromium.org
2.お好みの操作
・ブラウザ操作
クリックしたい箇所がテキスト(文字列)でできているなら、Heriumのclickメソッドが使える。
でも、テキストだけどうまくいかない、又は画像になってたりする場合は、Celeniumのメソッドを使って要素を指定した上でJavascriptでクリック等の操作をする。
下記は、要素の取得を行うメソッド。ID、Name、XPath、CSSセレクタ等いろいろ条件にできる。
・find_elementメソッド 条件に当てはまる最初の要素を返す
・find_elementsメソッド 条件に当てはまる全ての要素をリストで返す
要素の探し方は、Chromeで対象のWebサイトを開いて、適当なとこで右クリック「検証」から、クリック等したい要素がHTMLのどこにあたるのかを探す。Chrome便利。
基本的には、Helium試す→ダメならCelenium。Helium使えるとこでは使うのが一番作業時間短い。
注意
(1)クリックはJavaScript使う
Celeniumでもクリック操作できるが、画面外の要素はエラー出て落ちる。
なので、Celeniumのクリックメソッドは使わずに、execute_scriptメソッドを利用しJavaScriptのクリック操作を行うこと。
(2)ウェイトかける
適宜ウェイトをかけてご迷惑にならないようにしよ、ってのと。(time.sleepメソッド)
画面遷移後に要素が表示されてないのに操作しようとしてエラーになることも?その場合もウェイト必要かも。
Heliumは、その要素が表示されるまで、10秒まで勝手に待つようになってた気がする。
(3)Celeniumはバージョンアップしてメソッドの記述変わってる
find_element_by_idメソッド等は、ネットや本でいっぱい使われてますが、今使用できないです。
今は、find_elementメソッドになっており、第一引数で何を使って要素を指定するのか(ID、Xpath、CSSセレクタ等)を書く。下記ソースコード一行目の「By.ID」は、HTMLのID。第二引数は、その値。
element_check_logout = driver.find_element(By.ID, 'auto-logout') # チェックボックスにチェックが入っていなかったらチェックする if not element_check_logout.is_selected(): driver.execute_script('arguments[0].click();', element_check_logout) time.sleep(NUM_SHOW_PAGE_NEED_SLEEP)
・HTMLソースの解析
ブラウザ操作で対象のページを表示させたあとは、Beautiful soupの出番
(1)HTMLソースをBeautiful soupオブジェクトにする
個人的に、全部の具材が入った寄せ鍋みたいなイメージ。ここからお好みの具をすくってくるぞ。
html = driver.page_source
soup = BeautifulSoup(html, "html.parser")
(2)Beautiful soupオブジェクトから必要な文字列等を抽出する
Beautiful soupオブジェクトからfind系メソッドかselect系メソッドで文字列抽出。基本的にはどっち使っても良いのだが…
find系: 要素名、属性名指定できる←可読性が良い
find_all() 全ての要素をリストで返す
find() 最初に見つかった要素1つだけ返す
select系: CSSセレクタ使える。←CSSセレクタは他に被ってるかとか気にせず一発で取れる(ただし、動的な何かが含まれる場合は工夫必要)
select() 全ての要素をリストで返す
select_one() 最初に見つかった要素1つだけ返す
trs = soup.findAll("tr", bgcolor="#FFFFE0")
記述例
# -------------------------------------------------- # 株価を取得するメソッド # -------------------------------------------------- def get_kabuka(): list_kabuka = [] driver = start_chrome('https://quote.jpx.co.jp/jpx/template/quote.cgi?F=tmp/stock_search') # ※要修正※ # チェックボックスクリックが動作していないかも click('プライム') click('スタンダード') click('グロース') select(ComboBox('25件ずつ'), '100件ずつ') click(Button('検索開始')) time.sleep(NUM_SHOW_PAGE_NEED_SLEEP) while True: html = driver.page_source soup = BeautifulSoup(html, "html.parser") trs = soup.findAll("tr", bgcolor="#FFFFE0") for tr in trs: rows = [] for cell in tr.findAll('td'): rows.append(cell.get_text().replace("\r\n", "") .replace("\n", "") .replace("\t", "") .replace("\xa0", "")) # .replace(",", "") if rows: list_kabuka.append(rows) if Link('次のページ').exists(): click(Link('次のページ')) time.sleep(NUM_SHOW_PAGE_NEED_SLEEP) else: break kill_browser() # csvファイルに書き込み with open(PATH_KABUKA, 'w', newline="", encoding="utf_8_sig") as f: writer = csv.writer(f) writer.writerows(list_kabuka) return list_kabuka
まとめ
Helium、できなければCeleniumでブラウザ操作
↓
Beautiful soupでHTMLの鍋から好きな具材を拾おう
サイトによってどうやって書いたら拾えるかは、いろいろ手段があるので考えようね
【不動産鑑定】不動産鑑定評価基準のLINEスタンプが爆誕したよ
みんなおまたせ☆
正月使って何やってんだ????
オススメは「更地」スタンプです。
何卒宜しくお願い致します。
※
ごちゃごちゃ考えてるうちに外してしまったけど、候補挙げてもらった中で4つほど作りたい文言があるので次回に続く(まじか
パワポで作ったんですけど、ツールに慣れてなさすぎるのとセンスが壊滅的すぎるのでとんでもない時間かかってしまい、次回は筆で字を書くだけにしようと思います
【修習】Excelの入力と足し算等はできるけどそれ以上やったことない人向け学習ロードマップの一例
注)思い出したら今後追記していく可能性あり
私は修習始めるまで、Excelの入力と足し算等はできるけどそれ以上ほとんどやったことない人(確定申告の時だけ使う人)でした。
そんな私も、修習で突然指導鑑定士の先生のガチ試算表を頂いて致命傷を食らいながらも自分で色々作っていきたいメンタルまで到達したので、学習ロードマップの一例を記します。
※以下を実際にExcelをいじりながらやります。いきなり修習で作成するファイルを使ってもいいし、自分で学習を兼ねた何か(タスクリストや計画表等)を作りながらでもOK。
学習ロードマップ
※キー入力はWindows
【スタート】
・絶対覚える基本操作
・ブックの中にシートという、紙のようなものが何枚も作れる
・セルとは何か
セルの選択: クリック
セルに値を入力する
・列と行とは
セルサイズの変更(列ごと、行ごと)
・セルの中で四則演算、指数計算する方法
+-*/^など
()から優先して計算するよ(重ねて使うのOK)
セル参照して計算してみる
・セルの表示形式
セルの書式設定 > 表示形式
3桁区切りのカンマ
少数点何位まで表示←表示上の値と実際の値は異なることに注意!!!
グレゴリオ暦(西暦)と和暦
・セルの結合、中央揃え、左揃え等
↓
・基本操作2
・関数とは何か、どうやって使うか
=関数名(引数)
・基本的な関数を覚える
・SUM関数 - 指定した範囲のセルの値の合計値を返す
・ROUND関数 - 数値を丸めて返す
・基本的なショートカットキーを覚える
・コピー: Ctrl + C
・ペースト: Ctrl + P
・元に戻す: Ctrl + Z
(・"元に戻す"をキャンセル(やり直し): Ctrl + Y)
・罫線の引き方、消し方、線種
・文字サイズ、色等
・改ページプレビュー
印刷範囲の指定できる
↓
・必須に近いやつ
・全セル選択、行選択、列選択
・オートフィル
Ctrlキーを押しながらしたらどうなる?
セル参照してる式が入ったセルをオートフィルすると?
→セルの相対参照と絶対参照の違い
・セルのコピペと値のコピペの違い
・書式あり / なしコピペやオートフィル
↓
・慣れたら覚える関数
・IF関数
論理演算子とは
重ねて使えるよ(ネスト)
IF関数の概念わかったらプログラミングもできるよ。
・あんな関数あったら便利なのに、って思ったらググる
→まあまあ、あるよ。ないのも、あるよ。
・ショートカットをもっと覚える
上書き保存
印刷
新しい行を追加する
・その他操作
タブ: 次のセルへ
Shift押しながら選択
Ctrl押しながら選択
↓
・セルの表示形式~応用編~
ユーザ定義してみよ( 負の値のとき、△を頭につけるようにするなど)
ユーザ定義で"%"をつけるのはおすすめしない
【一旦のゴール】
別に覚える必要ないけど、式書くのが楽しくなってきたら
・式で使う値は極力セル参照するという考え方
・セルの中で改行すると長い式も読みやすい
・もっともっと関数覚える
VLOOKUP関数とか
・時点修正率をExcelで求めよう
月率にするか日率にするか
シリアル値とは(日数の計算できるよ)
DATE関数
・VBA
・セルでガチガチに組んでいた式や手動でやっていたことをVBAのプロシージャ(ユーザが定義した関数)にしてみよう
例)値が"/"だったら”100”を返すプロシージャ(比準式のアレ)
上3桁を丸めて上2桁にした値を返すプロシージャ
↑これをできるようになるには、下記2つが必要。(1)は身につける必要あり。(2)は、暗記する必要はないが、調べ方を身につける。
(1) プログラミングの基本概念
(2) VBAの文法、どこに記載するか
その他
・必ず印刷して確認しよう
罫線おかしかったりページにおさまってなかったりフォント一部違ったり
・便利サイト
【鑑定士試験】会計学 - TAC税理士問題集どっちがどうなの?
他にもいろいろあると思うんですが、私が大きい本屋(ジュンク堂)でさらーっと見て、これかこれにしよ、簿記も鑑定士もTAC民だし、まあTACにしとこ、みたいな感じで以下の2冊に決めました。どっちもまあまあやったのでこの2冊について簡単に書きます。
本は、もう処分してしまったので、記憶の中で書きますことをご了承下さい。あと、やったのは2021年版です。
※タイトル長いので、青い方を「青本」、黒っぽい方を「黒本」とします。
※TAC本買うなら、TACの直販サイトが基本的に安いと思います。
1.前提
どちらも財務諸表論の理論基本問題でレベル感ちょうど良かったです。
これしかやらなかったけど、他の本は少なくとも令和3、4年の出題には全く不要でした。ここに載ってる問題が本試験でそのままに近い形で出てきていました。
2.2冊の違い
実は、黒本に全ての論点を集約してました。(具体的には、問題等をコピーしてハサミで切って糊で貼るなど…)
すると、2冊の問題はかなり被ってることがわかりました。片方の本には載ってるけど、もう片方の本にはない問題もありましたが。ちなみに、TACテキストに載っていて、2冊になかった論点もあるにはあったけど、借地権?とかのマニアックなごく少数項目だったので無視していいと思います。
どちらかというと、青本の方が網羅的に載っていたと思います。数えたわけではないけど、黒本の方が問題数少ないと思う。また、青本は、巻末に会計基準が載ってるからお得。赤いシートで隠すと文字消える、みたいなのもありましたっけ?
黒本は、青本より解説が丁寧だったかも。モノクロ印刷。模試みたいな回答欄があるからそのまま本試験の練習になる(たしかPDFで配られてたような)。
3.どっちがいいの?
好みです。どっちでもちゃんとやれば1冊で十分と思います。
個人的には、前記の特徴から青本おすすめ。
4.注意点
予備校講師によると、鑑定士試験に出やすい、出にくい論点があるみたいです。だから、出やすい論点や新たに追加された論点は出題可能性が高いとかで丁寧に指導される(→ライバルは特定の論点を固めてくる)。よって、予備校の言うとおりに各論点は強弱つけるべきかと思います。
【修習】全体の雑な解説と必要なもの
こんなことをやってる場合ではないんだけど、やってることが難しすぎて全然わからなくて集中できないから、勢いをつけるために自分でわかってることを書くよ。
1.修習全体像
[A]パート
・eラーニング
手持ちのパソコンでオンライン受講
Bパートと並行してやる
締切さえ守ってればどっち先でもいい
[Bパート]
・物件調査(対象不動産を調査した結果を記載)1回
評価書作成の手順の中で、一番最初にやる不動産調査の練習となる。
↓
・一般実地演習13類型
評価書を最初から最後までフルで作成するもの。
4期間にわけてやる。
[Cパート]
・基本演習
本来、全国の修習生が東京に集合して全員で受講する講義を行うが、コロナのため、今年は全部ZOOMでやったそう。
評価書(一般実地演習と異なり一部テンプレあり)を作成して提出。
1年コースだと、A・Bパートと並行してやることになる。
2年コースだと、一般実地演習の再履修がなければ、これ単独でやるからかなりマシ。
[Dパート]
・修了考査
ラスボス。択一、論文、面接の地獄の3部構成。
一発合格、再試験、ストレート不合格がある。
今年くらいから雲行きが怪しい(合格率が急に絞られてる)。
合格すれば晴れて不動産鑑定士登録。
不合格ならもう1年 or 2年の修習。
2.必要なもの
公式参照ではあるが…
(1)パソコン等
ノーパソでもデスクトップでもいいが、2画面以上にできるとベター。資料を見ながら書けるため。
家にあるディスプレイにつなげるか、タブレットあれば何かアプリ入れてディスプレイ化する。または、2画面あるノートパソコンにする。
※私はASUS ZenBook Duo(14インチ)。色物っぽいが買ってよかった。持ってうろつくにはちょっと重い。旧モデル14万円くらいで買えた。メイン画面の縦幅狭め。キーボードのピッチ狭いが、私は気にならない。画面がどっちもタッチパネルなのが便利。
Excel、web検索バリバリに操作するため、何らかのマウスあるとベター。
トラックボールおすすめ。自分は有名どころの1つ、ロジクール M575Sだけど、なんでも良いからトラックボールもっと早く使えばよかった。プライムdayとか大きいセールだと4,000円弱まで価格下がっていたが…。
トラックボールのメリット:肩凝らない。動かさなくていいので場所問わず、膝の上とかでもできる。慣れるとめっちゃ速い。
機種固有のデメリット:ホイールボタンのチルト機能(左右に倒すやつ)が無い。これは結構不便。
my カスタマイズ:人差し指で押すサブキーは、奥が「アプリケーション切り替え」、手前が「戻る」にしてる。最高。
(2)必要なアプリ
・Microsoft Word
互換性ある別のアプリ使ってる人もいなくはないはずだけど、まあ無いと互換性怖いかと。
サブスク(365)でお名前.comだったかが公式より若干安めに売ってた。探すと2ヶ月無料、1ヶ月無料の入り口(バナー)あるかも。注意点としては、やめる時期がシビアでやらしい(即日退会できなかったはず)。素直に公式でも良いと思う。
私は、大学で学生に365与えられてるのでそれ利用してる。
ExcelとWord、特にExcelは操作を覚える必要がある。本読むより、手を動かして覚える。VBAまでは(当然ながら)不要だが、追々覚えていくと自分が楽。
・PDF関係
PDFの位置図に文字書く必要ある。
提出ファイルはPDFに変換する。
なので、「PDFに文字や図形記入する」のと「PDF結合、ページ編集」ができるアプリが必要となる。
Adobe Acrobat DCは、修習だけにサブスク買うには高い。
とりあえず、個人で用意するなら以下でOK。
前者
PDF-Xchange Editor(無料アプリ)
※たまにエラーある。
後者
Cube PDF Utility(無料アプリ)
Excel関係は、また後日。
追記
パソコンはデスクトップでもいいとか書いちゃったけど、基本演習が東京ならノートパソコン必須になるんですかね?
どっかにもう書いてあったらすみません。
【修習攻略】2年コース1年やってきて思うこと(一部ネガティブ)
自分について前提
・鑑定業どころか不動産業未経験
・あんまり普通の仕事やったことない
思うこと(愚痴)
つらい
向いてない
でもここまできたら後戻りできない
正確には、調査を行う事務員の仕事が非常に向いてないのだと思う。
何か人と感覚がズレているらしく、お叱りを受けてばかりだ。
不動産関係未経験できた他の事務員はそつなくこなしている。
作業は"誰でもできる"ようにチューニングしているそうだから、
自分のような人間は、一般に想定される"誰でも"の枠に入らないのだと思う。
好成績をキープしていた職業もあったから、
普通の人が普通にできる仕事ができないということを
この年で知るのはきついものがある。
受験期間5年という月日と多額の予備校代(数十万)、
修習代140万(今後追加の可能性あり)を費やしている。
if 記憶をなくして合格発表の日に戻るとしたら
~修習開始まで
・とりあえず即日修習先にTELしろ(地方民)
近くに修習先なければ大島さんとか遠隔地考えなきゃだから
最悪今年修習無理だぞ
・更地評価の流れと物件調査書いてある本を買って読んどけ
(修習テキストも来るけど、もっと実務的に具体的な情報が欲しかった)
・なお、鑑定関係は特に、専門書が定価より値上がってるときが
結構あるから注意だぞ
・修習LINEオープンチャットがあるから入っとくと◎
~修習開始後
・つらくてもeラーニングは少しずつやるんだぞ
・Google ストリートビューにだけ頼らず、対象地も事例地も現地を歩け
・泣きながら食らいついていけ(それしかない)
・専門書いっぱい買うから、本を安く購入する手段あれば覚えとく
ちなみに、安い中古本はあまりないのでおとなしく新品買う
Kindle版は出てないのも多いのでおとなしく紙を買う
・生協(5%OFF)
・地域商品券(15%くらいOFF)
期間限定・抽選販売かもだが、自治体によってあるから要チェックだ
その場合、以下で注文して書店受け取り・支払いが便利
・Amazon Student
学生なら入っとこ(私は通信制大学生なので大人だけど入った)
本3冊以上同時購入で10%オフだったか?
Amazon.co.jp: Prime Student - 学生のためのお得なプログラム
・以上のとこなければ、Amazonかヨドバシドットコムで買う
ヨドバシドットコムがやや安いかも
でも、ヨドバシは、ある鑑定本買おうとしていたとき、
発売日以降も注文できない状態が続いたし、
予約もできないので、注意が必要
ただ、先に述べたとおり、
【Amazonは新品でも定価より高い本がゴロゴロある】ので、
定価確認のためヨドバシを確認しよう
今自分が言えるのはこれくらい…
色んな意見有ると思います