165 日目(雨)想定内の出費
0:20 ノーミスで進める自信があるところまで進めてサスペンド。寝る。
8:50 起床。雨が降っているせいか落ち着いている。朝飯を食って外出。
9:30 ひきふね図書館。朝刊、小説すばる 2020.10 号の一部連載、『Jupyter 入門』を速読して退館。
11:00 曳舟の部屋に戻る。雨の日に外を歩くといつでも右足だけが濡れる。今日は一日 PC を開いて暇つぶしになるのか?
ローカルに保存しておいた某ブログのタグリストのスクレイピングをやる。次のようなことをしてテキストエディターでチェックする。
URL だけではなく <A> と </A> の間の文字列も重要なので、hxwls ではなく hxselect を用いる:
bash$ hxclean tags.html | hxselect -s '\n' 'a[href*="\/tag\/"]' > tags.txt
以上の処理は一度手動で行えば十分だ。本番スクリプトのコマンドライン引数として参照される。 恐ろしいことに 2616 種ものタグが定義されている。こういう大規模ブログの管理人はどうやってコンテンツを把握しているのだろう。
次にタグによる検索結果ページのスクレイピングを考える。検索結果表示ページ全部を取得するというよりは、 各ページで必要な処理をしてから次のページを取得するという処理でなければ効率が悪い。 そうなると反復回数を明示しないループを書くことになる。これは後で考える。
今試しているブログに対しては、次のページの URL を得るには次のようなコマンドを実行する:
bash$ hxclean page1.html | hxselect -c -s '\n' 'a.nextpostslink::attr(href)' 2>/dev/null | uniq
URL が得られればそれをダウンロードしてローカルに保存し、目的のスクレイピングを行う。 空文字列ならばスクレイピング終了とすればいいだろう。
検索結果ページから各エントリーの URL を抽出する処理で難航する。オリジナルの HTML が正しくなくツールが構文エラーを出すのだ。
具体的には <A> の子に <H2> があるのがよろしくない。これを hxclean で処理すると DOM の構造が変化するので、
セレクターをそれに合わせて決める必要がある。大雑把に <HEADER> の子孫であるような <A> と指定すればよかったのだ:
bash$ hxclean page1.html | hxselect -c -s '\n' 'header a::attr(href)' 2>/dev/null
これを実行すると個別記事の URL が複数出力される。あとは実装済みの個別ページ用スクレイピング処理に渡せばよい。
次ページをたどる処理が面倒。外出。
13:55 オーケー曳舟店。182 円。
- おにぎり (2)
- ポテコ塩
部屋に戻っておやつ休憩。14:30 作業に戻る。
15:10 某ブログ専用スクレイピングスクリプトの大幅改修終了。インターネットがテザリングしかないのでテストできないから完成ではない。 しかも、このスクリプト、もう使う予定がない。プログラマーの意地だけでコードだけでも仕上げた。
ウディタのデモゲームとヘルプを行ったり来たりして基本機能を確認する。
16:30 音楽を聴きながら居眠りしていたら配達が来て驚いた。雨の中たいへんだ。
- 先週失効した銀行のカードの新品が書留として到着。これで金を振り込めなくなる心配はなくなった。
- 火災保険の振込用紙着信。これは単なる郵便物。不動産屋に金を遣い込まないでと言われていた件だ。
やることがないので居眠り続行。19:15 に起きて外出。雨が弱まる気配はない。
19:35 セブンイレブン墨田東向島二丁目店で火災保険の振り込み。金額が万を超えるわけだが、よくも手許に十分な現金があったな。
19:50 コモディイイダ東向島店で食料調達。きのうよりさらに安い海鮮丼に手が伸びる。456 円。
- てんこ盛り海鮮丼
- ホットケーキメープル&マーガリン
- さっくり食パン
部屋に戻って入浴。寒いので長めに。20:35 PC を開いて帳簿をつける。イヤホンを耳につないで晩飯。 刺身がうまい。
21:50 テザリング終了。Twitter を見ると、仕事しないで寿司を食うのが憚られるという人が私以外にもいる。
ゲームに移行する。地獄の伯爵令嬢の逆襲はレベル 29 から再開。水晶玉の途中からか。 キラーバレリーナにやられる。こいつのパターンをガチガチに固めよう。
また初めからやる。今度は水晶玉をレベル 20 台後半で連戦する。 どう考えてもキラーバレリーナを最後に回すのが自然だ。 店不使用縛りプレイなどで魅了対策装備がないときには、こいつを眠らせる以外の攻略法が思いつかない。
明日は午前から面接なのでもう寝る。
Reading Notes
『Jupyter 入門』で知ったことを控えておく。
- JupyterLab, Google Colaboratory
- sci-kit learn: 機械学習のパッケージにつき、私の興味からは外れる。
- Pandas: なぜか未導入。
- ipyleaflet: 地図ライブラリーらしい。
- ipywidgets: 間接的にインストール済みだ。
- カーネルを JavaScript に変えられる。
- RISE というスライドショー拡張がある。
- nbextensions: しかしこの名前には見覚えあり。
- HTTPS でのノートブックの動作。
以上。