プログラマ行進曲第二章

主にソフトウェア関連の技術をネタにした記事を執筆するためのブログ

調子に乗ってライブドアブログに載っている2chまとめサイトのURLも取り出してみた

前回の記事でブロマガのページに載っている2chまとめサイトのURLを取り出してみるということをやってみたので、今回はライブドアブログのページからも取得してみたいと思います。

仕様というか、やっていることは以下の通り。だいたい前回と同じ。

  • 言語はPython(2.7.2)。2.6とか古いバージョンでも使えると思う。
  • pyqueryというライブラリを使用。
  • 取得するのは最初の1ページのみ。
  • コマンドプロンプトに表示するだけの簡単な仕様。
  • 取得先ページのエンコーディングはUTF-8だと決め打ちしてる(だって判定面倒くさいし)

で、取得できたのがこれ。

VIPPERな俺
http://blog.livedoor.jp/news23vip/

ロン速
http://blog.livedoor.jp/ronsoku2/

無題のドキュメント
http://www.mudainodocument.com/

暇人\(^o^)/速報
http://himasoku.com/

結婚・恋愛ニュースぷらす
http://blog.livedoor.jp/kekkongo/

アルファルファモザイク
http://alfalfalfa.com/

もみあげチャ~シュ~
http://michaelsan.livedoor.biz/

ぶる速-VIP
http://burusoku-vip.com/

マジキチ速報
http://majikichi.com/

[2ch]お料理速報
http://oryouri.2chblog.jp/

ラジック
http://rajic.ldblog.jp/

ネギ速
http://www.negisoku.com/

ぁゃιぃ(*゚ー゚)NEWS 2nd
http://ayacnews2nd.com/

キニ速
http://blog.livedoor.jp/kinisoku/

ガハろぐNewsヽ(・ω・)/ズコー
http://gahalog.2chblog.jp/

妹はVIPPER
http://vipsister23.com/

VIPPER速報
http://vippers.jp/

ねたAtoZ
http://netaatoz.jp/

哲学ニュースnwk
http://blog.livedoor.jp/nwknews/

BIPブログ
http://bipblog.com/

流速VIP
http://ryusoku.com/

ゴールデンタイムズ
http://blog.livedoor.jp/goldennews/

ブラブラブラウジング
http://brow2ing.doorblog.jp/

カオスちゃんねる
http://chaos2ch.com/

ゆるりと ひじきそくほう
http://hijikisokuhou.doorblog.jp/

ソニック速報
http://sonicch.com/

暇つぶしニュース
http://blog.livedoor.jp/rbkyn844/

育児板拾い読み@2ch+
http://blog.livedoor.jp/ikuzi2p/

2chコピペ保存道場
http://2chcopipe.com/

はーとログ
http://blog.livedoor.jp/love120331/

キチガイママまとめ保管庫
http://www.kitimama-matome.net/

調理兵はVIPPERだった
http://blog.livedoor.jp/nonvip/

いたしん!
http://itaishinja.com/

かつもくブログ
http://katsumoku.net/

ライフハックちゃんねる弐式
http://lifehack2ch.livedoor.biz/

あじゃじゃしたー
http://blog.livedoor.jp/chihhylove/

2chエクサワロス
http://exawarosu.net/

保守速報
http://www.hoshusokuhou.com/

ほんわか2ちゃんねる
http://honwaka2ch.livedoor.biz/

鬼嫁ちゃんねる
http://oniyomech.livedoor.biz/

既婚者の墓場
http://kikonboti.com/

ふよふよ速報。
http://huyosoku.com/

ラビット速報
http://rabitsokuhou.2chblog.jp/

U-1速報
http://u1sokuhou.ldblog.jp/

デジタルニューススレッド
http://digital-thread.com/

ハムスター速報
http://hamusoku.com/

大艦巨砲主義!
http://military38.com/

【2ch】ニュー速VIPブログ(`・ω・´)
http://blog.livedoor.jp/insidears/

【2ch】ニーてつVIPブログ
http://neetetsu.com/

ぴろり速報2ちゃんねる
http://pirori2ch.com/

きりみちほう
http://kirimix.net

DDN JAPAN
http://japan.digitaldj-network.com

もえたす
http://www.moe2p.com

おいしいお
http://www.gurum.biz

かれっじライフハッキング
http://college2ch.blomaga.jp

WorldNews2ch
http://worldnews2ch.com

ダメージ0
http://damage0.blomaga.jp

いやあ、いっぱいありますね。少しコードに手を加えれば検索を一括除外するのもコレで楽ですね!

前回も書きましたが、上で掲載されたサイトが全て2chまとめ系のサイトではありませんので悪しからず。

数が増えて面倒くさいので、2chまとめ系かどうか一つ一つ調べるのはやりません。

実際に書いてみて思ったことなど

  • こんなコードでも割と書くのに時間がかかって自分の能力不足を痛感。
  • pyqueryをまともに使うのは前回が初めてだったけど、深いところにある要素も割と簡単に取れるのが良かった。
    • というか、jQueryの書き方とか知らなかったけど、zen-codingとかEmmetとかとほとんど同じ書き方なんだなあ、と思った。
    • 多分jQueryの方が先なんだろうけど。
  • 適切な変数名を思いつけなくて憤死した。matome_info_domsとかそれでいいのかよ!と自分に突っ込みを入れずにはいられない。
  • 最初書いたときはforステートメントじゃなくてジェネレータ式とか使ったけど、思いの外読みづらくなったのでforステートメントに戻した。
    • 未だにジェネレータ式とかジェネレータの適切な使いどころが分からない。
  • set型ってこんな使い方でいいのか?

今後これを改良するとしたらどこに手をつけるか

取得するのが最初の1ページだけなので、2ページ目以降の情報も取得できるようにする、というのが順当だろうなあ。

と思いつつ、ページがどれくらい続くのか判定する一番真っ当なやり方ってどうやるんだろう?と思ったりしている。

  • クエリ文字列のpageの値を1ずつ増やしていってGETで情報を取り、取得したページの中にまとめサイトの情報がなかったら最終ページと判断する。
  • ページ内に設置されたボタンのテキストから最終ページの数値を取得する。

ぱっと思いついたのがコレなんだけど、どうも泥臭い気がしてならない。

autopagerizeの仕様とかを調べるといいのかな?