結婚について
ハロートナミです。どうですか?
特に何という事もないんですが、先日入籍しました。
折角なので、結婚について思うところを書きます。
自分は結婚願望がほとんど無くて、まあ一生結婚しないだろうなと思ってました。
もっと言うと彼女ほしいみたいなのもなくて、興味としてセックスはしてみたいけど、わざわざ他人に合わせて生活を変える気はさらさらなくて、一生1人でやっていくんだろうなあと思ってました。
別にそれが嫌ではなくて、パートナーが居なくとも性欲を満たす手段はいくらでもあるし、ネットの先に沢山の繋がりがあって、それらと現実の繋がりの差があまり感じられなかったので、本当に気にならないという感じでした。
では何故結婚したか?という話になるんですが、奇跡的に自分の生活に合致する女性と出会ったからとしか言い様がありません。
自分がネットの友達とVCでワイワイやりながらゲームしてても何も言わない。
自分がTwitterでエロ画像を熱心に収集してても何も言わない。
自分が趣味にどれだけ無駄遣いしても何も言わない。
このへんは世間一般の女性に対する偏見ベースではタブーな行為だと認識していたんですが、これに対して怒ったり嫌がったりする事が無かったのが有難かったです。
やりたい事をやりたいようにやっているのを是としてくれる女性がこの世に存在しているとは思ってもみませんでした。
それでいてご飯は一緒に食べてくれるし、話し相手としてそこに存在するし、お互いに楽しさや面白さを共有出来る女性が見つかったので、一緒に居る手段として結婚した。という感じです。
結婚、してみるとそんなに悪いものではありません。
指輪はまだ慣れませんが、いい感じでやっていけるように頑張ろうみたいな気持ちになります。
よかったですね。
氷川サムライ
ハローハロートナミです?元気。
氷川行きました。
ヒに行き過ぎている感ありますね。ありますよね?あるね
何回行っても川はいいし、安くて飽きない。
いいですね
行ったの5月中旬なんだけどもう人がいまくりですね。
6月入ると虫と人がどうしようもないのでキャンプシーズン終わりかなみたいなのがあります。
ちょっと奥まった中段に設営です。
左のフロアレスシェルター氏は先にきていた友人オタクです。
今回のメインイベント。山と川とアジャイルサムライ。ピントのせいでコラみたいですね
キャンプで読書ってゆるキャン△でも頻出する要素なんですけど、やってみたらマジで良かったです。
穏やかだし風が気持ちいいし、なんかこう、キャンプ場で本を読んだ気になります。
皆さんも氷川で技術書もくもく会やりましょう
疲れたから川見てますね
川いいね
ほんといい。川だいすき
その後、俺にキャンプを教えてくれたオタクが合流します。そう、同じテントで……
風呂入ったりして夜ですね。夜は気持ちをやるよね
何回やっても焚き火は良いとしか言えなくて、ゴールドになります
でも暑くなってくると焚き火の有り難み薄れていくし、そういう面からも6~9月のキャンプはおすすめできない
ふわっと増えたオタクがモーラナイフを持ってきていたのでレンタルして焚き火用の薪でフェザースティックの練習しました。
3本ぐらいダメにしたら慣れて順調に作れるようになりました。よかったですね
朝食のご様子
ホットサンドはいつものとして、俺にキャンプを教えてくれたオタクがSPAMやってていいなと思いました。
SPAM高いし、なんというか肉と脂と塩なので若干日和ってあんま食わないんですけど
お外で炙って食うのすげー良かったです
天気良し
よかったですね。
もう6月になるのでキャンプは終わって、登山するか引きこもってゲームするかの夏がきます。
10月ぐらいからまたキャンプして、冬はスノボがありますから、1年は忙しいですね。
がんばっていきましょう
pythonとselenium
ハロートナミです。元気?
最近ワークでseleniumのお勉強をしたので備忘録を産みます
導入
pip install selenium
別途動かしたいブラウザのdriverが必要なので落とす。
chromeならchrome webdriverとかでググれば出てくる。
使ってるブラウザとdriverの対応バージョンを要確認とのことだったが、どっちも最新にしてれば多分動く。
使ってみる
from selenium import webdriver # ブラウザ起動 driver = webdriver.Chrome('WebDriverを落としたところ/chromedriver.exe') # google.comにアクセスして表示 driver.get('https://www.google.com/')
そのへんのチュートリアル読んでとりあえず書いたソース。
これを実行するとchromeが開いて、google.comが表示される。
webdriverってのは導入で落としてきたdriverのことで、exeファイルを直接パスで指定する。
.getはgetリクエストを送れってことであってるよな……?
ツールでブラウザを動かす場合、最後はブラウザを閉じた方がお行儀がいいんだろうけど
開発中はすぐ閉じちゃうと何が起きてるかわからんので開きっぱにしておく。
なお、閉じる時は
driver.quit()
とかで閉じれる。
seleniumで出来る事をもう少し掘っていく
from selenium import webdriver # ブラウザ起動 driver = webdriver.Chrome('WebDriverを落としたところ/chromedriver.exe') # google.comにアクセスして表示 driver.get('https://www.google.com/') # 検索フォームに文字列を渡す formInput = driver.find_element_by_xpath('//*[@id="lst-ib"]') formInput.send_keys('TonamiLog') # 検索実行 btnSend = driver.find_element_by_xpath('/html/body/div/div[3]/form/div[2]/div[3]/center/input[1]') btnSend.click()
xpathとかいう概念が出てくる。
xpathとは何かを書くと大変なので省くけどざっくり言うとHTML中の特定要素を指定するための構文です。
driver.find_element_by_xpath('hoge')
これはselenium頻出関数と思われるファインドエレメントバイxpathさんです。
xpathを見て特定エレメントを取得してくれます。そのまんま。
idとかclass名とかでもエレメント取得出来るんだけど、xpathが一番汎用性高いっぽい。
エレメント取得したらそれを操作していきます。
例えば
# 検索フォームに文字列を渡す formInput = driver.find_element_by_xpath('//*[@id="lst-ib"]') formInput.send_keys('TonamiLog')
は、idがlst-ibのHTMLタグからエレメントを探してきて
見つかったエレメントにTonamiLogって文字列を渡してる。
これをするとGoogle.comの検索フォームにTonamiLogって文字が入る。すげえ
次に
# 検索実行 btnSend = driver.find_element_by_xpath('/html/body/div/div[3]/form/div[2]/div[3]/center/input[1]') btnSend.click()
ですが、これは親要素から順に相対パスでエレメントを探してきて
見つかったエレメントをクリックしてます。
これをするとGoogle.comの検索ボタンが押されて検索が実行される。すげえね
最初のうちはページのソース見て唸りながらxpath書いてたんだけど、
普通にデベロッパーツールからエレメント指定して、ソース右クリック>コピー>xpathで要素のxpathがコピー出来ました。
文明~!
ちなみに、スクレイピングしたいサイトがアプデされたりして構成が変わるとxpathの指定が狂うので
都度指定し直すかid等絶対パス風に指定出来る仕組みを考えたらいいと思います。
send_keys()とclick()の他にはtextとかがあって、その要素の持つ文字列を簡単に取得出来るし
なんならget_attribute('hoge')でなんでも取得出来ます。get_attribute('value')とかget_attribute('innerHTML')とか
このへんまで理解出来るとブラウザ操作は自由自在で基本的な事はだいたい出来ます。やったね
ちなみにajaxとかの非同期処理で来る値をスクレイピングしたい場合にはWebDriverWaitとかの仕組みが用意されていて
説明省くけどajaxの結果が来たらhogehogeとかも書けます。ググるといっぱい出てくる
これで自由にえっち画像をスクレイピング出来るし
Webアプリをブラウザ経由で自動テストしたり
自社のポータルサイトを自動で操作して悪いことが出来るとか
夢が広がるね。よかったですね。