スマホからスクレイピングしてきたデータを見れるようにしたら便利だった
ここ半年。スクレイピングばかりしている。
自分には全体を眺めたいという欲求が少しだけ潜在している気がする。全体を眺めて何をするわけでもないんだけど、俯瞰された「何か」を見ていると、リラックス出来る。もちろん、そこには「発見」があるのかもしれない。トレンドだったり、一貫しているものだったり、意図だったり、生活感だったり、Googleで検索クエリーを組み合わせる探索とは、少し違う。それらをスクレイピングで満たしている。プログラムが情報の海原を生み出し続け、スクロールバーで泳ぎ、自分の日常生活に何らかの変化をもたらしてくれるもの面白い。
はてなを掘る
(Rubyに関して、はてぶが3つ以上付いた、2016年〜2005年までを1ページで見れるようになっている)
良質なスクレイピングスポットを発見して、そこを掘り続けるのが楽しい。個人的な良質スクレイピングスポットは「はてな」だ。質の良い情報アウトプットされやすいのか、スクレイピングしていて、興味深い情報が多い。コーヒーを飲んでいる最中に、RubyやPerlで書いた100行から200行程の小さなスクリプトが、はてなブログ、はてなブックマークを掘り続けてくれる。その後。外からスマホでデータにアクセスする。
スクレイピング + 静的HTML + Dropbox
スクレイピングしたデータをスマホでアクセス出来るようにしとくと便利だ。その時やっていることは、スクレイピングしてきたデータを静的HTMLとしてDropboxに出力するということだ。
今回はRubyで書いた。
静的HTMLをDropboxに生成しているところのコードを載せてみる。
output_html = <<EOS <html> <head> <meta charset="UTF-8"> </head> <body> #{data_list} </body> </html> EOS File.write("/home/username/Dropbox/one_page_hatebu/output.html", output_html)
ヒアドキュメントにHTMLを直書きして、表示させたいデータを式展開でヒアドキュメントの中に埋め込み、File.writeでDropboxのフォルダの中に.htmlファイルを出力している。今回は、data_listにスクレイピングしたデータを入れている。
最後に
不思議と、スクレイピングはプログラミングの学習にも繋がり、最近使い始めたRubyも書けるようになってきた。これもスクレイピングをすることの恩恵なのかもしれない。プログラミングを覚えるきっかけとしてスクレイピングは効果的だと思うのでおすすめしておきたい。
はてなブログの新着エントリーを10件から500件に増やしてたのを作ってみた
新着エントリーが10件表示だったので、500件表示にしてみた。ブログ探しに使ってみてください。
テック系ブログを探すのに丁度良い
僕はテックエントリーが大好きで、自分の知らない領域の技術について読んだり、ライフハック的な技術の使い方を淡々と記録している日記を読んだりします。これが楽しい。
ただ、ぼーっと新着エントリーを眺めるより、テック系ブログを見つける。と目的を持ちながら使うとかなり見つかります。
作る時に参考になったPerl本
本書のなかで、WAF使おうぜWAFと書いてあった。そんで、Mojoliciousがおすすめと書いてあったので、その通りにMojoliciousで作った。自分の使っているのはMojolicious::Liteだけど十分ウェブプログラミングが楽しめる。最初はローカル環境で作ってから、本番環境で動かせるようにした。本書はPerlビギナー向けに書かれている本で、CPANの解説も豊富だし、なによりPerl書きたい!ってなる良い本です。
- 作者: 和田裕介
- 出版社/メーカー: 和田裕介
- 発売日: 2013/03/13
- メディア: Kindle版
- 購入: 3人 クリック: 61回
- この商品を含むブログ (9件) を見る
最近買ったPerlの本
小さいPerlプログラムを書くのが楽しくて、自分にとって有益そうな小さな案が浮かんだら小さなプログラムでも書いてしまいたくなる。そんな中。少しでもPerlを便利に使いこなせるようになるために2冊程本を買ってみた。中古で買ったので合計で1300円程だった気がする。Perlの本は古い本が多いので、全体的に安い印象。
- 作者: 冨田尚樹,タナカユカリ
- 出版社/メーカー: ワークスコーポレーション
- 発売日: 2011/04/08
- メディア: 単行本(ソフトカバー)
- 購入: 20人 クリック: 2,028回
- この商品を含むブログ (21件) を見る
本のタイトル通り。CPANモジュールが沢山掲載されている。参考価値が高い一冊。この本の元ネタとなっているメルマガが、ウェブに少しだけ掲載されていて、最初はここを眺めていた。本の方では、400ページ以上CPANモジュールの解説があって、素直に驚いた。
CGI & Perl ポケットリファレンス (Pocket reference)
- 作者: 藤田郁,三島俊司
- 出版社/メーカー: 技術評論社
- 発売日: 1999/12/02
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 81回
- この商品を含むブログ (23件) を見る
標準関数が沢山掲載されている。古い本なんだけどPerlビギナーの自分にとっては役に立つ。
2冊とも、眺めてるだけでも有益かもしれない。頭の片隅に置いといて、必要な時に詳細を読みこめばいいのかもしれない。リファレンスとして読書できる素敵な2冊だと思いました。
はてなブログを1ページで見れるようにすると結構便利だった
phaさんの無職日記を眺めてHPを回復させることが好きです。ただ、閲覧するときにはてなブログが生成している月別アーカイブからだと、このような表示になってしまいます。
このような表示形式だと過去の日記を快適に見ることが難しいなと思いました。「次のページ」ボタンを連射するのが疲れるからです。なので月別アーカイブをスクレイピングして、一枚のページにまとめてみました。
このような表示形式にしてあげると、1ページで2016年から2003年。ブログ全体を見ることが出来ます。
使ったPerlモジュール
・LWP::Simple
・HTML::TreeBuilder
・Time::Piece
・DBI
・Mojolicious::Lite
コンピュータの技術書出版数ランキング(1位~100位)
コンピュータの技術書を出版している出版社がどれだけ本を出版しているのか気になったので調べてみました。データはAmazonの出版社一覧から手に入れてるので、ランキングに正しさがあるのかは分かりません。ある程度の傾向は掴めると思います。
ランキング
1位 技術評論社
4873冊
2位 SBクリエイティブ
3433冊
3位 秀和システム
2850冊
4位 アスキー
2752冊
5位 翔泳社
2615冊
6位 オーム社
2555冊
7位 毎日コミュニケーションズ
2490冊
8位 日経BP社
2329冊
9位 インプレス
2092冊
10位 工学社
1615冊
11位 ナツメ社
1397冊
12位 宝島社
1323冊
13位 共立出版
1258冊
14位 ソーテック社
894冊
15位 日刊工業新聞社
863冊
16位 エーアイ出版
828冊
17位 オライリー・ジャパン
823冊
18位 KADOKAWA/アスキー・メディア...
737冊
19位 CQ出版
716冊
20位 晋遊舎
680冊
21位 エムディエヌコーポレーション
669冊
22位 コロナ社
663冊
23位 ソシム
649冊
24位 インフォレスト
647冊
25位 ローカス
614冊
26位 講談社
550冊
27位 学研
490冊
28位 森北出版
462冊
29位 日本実業出版社
461冊
30位 サイエンス社
453冊
31位 カットシステム
443冊
32位 メディアテック出版
407冊
33位 日本経済新聞出版社
406冊
34位 新星出版社
404冊
35位 東京電機大学出版局
382冊
36位 ピアソンエデュケーション
375冊
37位 マイナビ
373冊
38位 FOM出版
366冊
39位 岩波書店
360冊
40位 近代科学社
353冊
41位 丸善
350冊
42位 秀和システムトレーディング
327冊
43位 朝倉書店
325冊
44位 実教出版
319冊
45位 培風館
318冊
46位 ダイヤモンド社
313冊
47位 エスシーシー
308冊
48位 昭晃堂
293冊
49位 アスペクト
292冊
50位 東洋経済新報社
292冊
51位 ビーエヌエヌ
291冊
52位 インプレスR&D
284冊
53位 ディーアート
284冊
54位 エクスナレッジ
283冊
55位 ジャストシステム
273冊
56位 リックテレコム
271冊
57位 PHP研究所
267冊
58位 誠文堂新光社
252冊
59位 笠倉出版社
249冊
60位 NTT出版
247冊
61位 成美堂出版
245冊
62位 工学図書
242冊
63位 ソフトリサーチセンター
237冊
64位 日本文芸社
234冊
65位 パーソナルメディア
230冊
66位 英和出版社
229冊
67位 電波新聞社
229冊
68位 明日香出版社
227冊
69位 学習研究社
223冊
70位 ボーンデジタル
219冊
71位 三才ブックス
219冊
72位 日本規格協会
210冊
73位 広文社
208冊
74位 新紀元社
206冊
75位 中央経済社
195冊
76位 エクシードプレス
190冊
77位 JICC出版局
186冊
78位 ラジオ技術社
180冊
79位 工業調査会
175冊
80位 西東社
174冊
81位 KADOKAWA/中経出版
161冊
82位 日科技連出版社
160冊
83位 ソニー・マガジンズ
154冊
84位 シーアンドアール研究所
153冊
85位 リットーミュージック
153冊
86位 産業図書
153冊
87位 双葉社
147冊
88位 九天社
144冊
89位 千舷社
135冊
90位 徳間書店
132冊
91位 ダイアプレス
128冊
92位 山海堂
127冊
93位 ムイスリ出版
125冊
94位 ベストセラーズ
124冊
95位 メディアボーイ
117冊
96位 ビー・エヌ・エヌ
115冊
97位 朝日新聞社
115冊
98位 アイテック情報処理技術者教育センター
114冊
99位 日本評論社
114冊
100位 海文堂
113冊
データとプログラム
Amazonの出版社一覧を参考にします。(出版社一覧にオライリー・ジャパンがなかったので、ココを参考にしました)
データを取ってきました。データがソートされて並んでいません。
使い捨てプログラムですが、ソートしてくれました。File::Slurpモジュールを使用しました。read_fileを使うことで、一行でテキストファイルを配列データに変換してくれて便利でした。
use strict; use warnings; use File::Slurp; my @lines = read_file('IT_publisher_list'); my %list; for my $pub_str (@lines) { $pub_str =~ s/,//; $pub_str =~ /(.*) \((\d*)\)/; $list{$1} = $2; } for my $key (sort {$list{$b} <=> $list{$a} || $a cmp $b} keys %list) { print $key . "=" . $list{$key} . "\n"; }
amazonのエロ本ランキング(1位~100位)を取得する使い捨てプログラムを書いた
コード
use strict; use warnings; use WWW::Mechanize; use HTML::TreeBuilder; sub get_erorank { my %rank_data = (); foreach my $page_number (1..5) { my $mech = new WWW::Mechanize( autocheck => 1 ); $mech->get('http://www.amazon.co.jp/gp/bestsellers/books/10667101/ref=zg_bs_10667101_pg_2?ie=UTF8&pg='.$page_number); my $tree = HTML::TreeBuilder->new; $tree->parse($mech->content); foreach my $zg_tag ($tree->look_down("class", "zg_itemRow")) { my $rank = $zg_tag->look_down("class", "zg_rankNumber")->as_text; $rank =~ s/\.//; my $title = $zg_tag->look_down("class", "zg_title")->as_text; $rank_data{$rank} = $title; } } return %rank_data; }
説明
使用モジュールはMechanizeとTreeBuilderです。Mechanizeで1ページから5ページまでのHTMLを取得しています。あと後TreeBuilderでHTMLを解析して、お目当ての情報(順位とタイトル)を取得しています。LWPでアマゾンのエロ本ランキングを取得すると年齢認証ページに飛ばされてしいます。MechanizeがAgentだと、年齢認証ページに飛ばされず、そのままランキングページにアクセスできます。なのでMechanizeを使っています。
ウェブから情報を自動取得するテクニックが沢山書いてある本
Spidering hacks―ウェブ情報ラクラク取得テクニック101選
- 作者: Kevin Hemenway,Tara Calishain,村上雅章
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2004/05
- メディア: 単行本
- 購入: 52人 クリック: 904回
- この商品を含むブログ (104件) を見る