池袋の老舗店からデータをスクレイピングする話

池袋紳士 では、登録している風俗店のウェブサイトの出勤表を参照して、出勤している女の子の一覧を表示しております。

これは僕が勝手に取得して表示している情報で、お店がデータを入力してくれているわけではございません。

ウェブサイトのHTMLを取得して、その中から名前やスリーサイズなどの情報を抽出しております。いわゆるスクレイピングでございます。

現在、40店舗分ほどの出勤情報を表示しています。40店舗分の出勤情報の抽出というとかなりの開発規模にも見えますが、実はそれほどでもございません。

最初の数店舗はかなり時間をかけて開発いたしましたが後はかなりスムーズに開発することが出来ました。速ければ一店舗10分ほど遅くても30分で開発することが可能です。

まずざっとサイトの構成をながめ、どのページから女の子の一覧と出勤スケジュールを取得するか考えます。

この、サイト全体を眺める作業が一番難しいのです。人目も気になります、また、画像を無視して純粋にHTMLに集中するのが難しいのでございます。

ページが決まったら、HTMLの構造やスリーサイズの記述形式などをしらべ、どのように値を抽出するか決定いたします。

たとえばスリーサイズの記述方式は店舗によって大きく異なります。

 B83(C) W57 H85

が多いのですが、ほとんどのサイトでは

 B.83(C) W.57 H.85

のようにピリオドなどの記号をいれたり、

83(C) 57 85

のような数字の羅列であることもありますので、十分な注意が必要でございます。

ここまでできれば、あとは書くだけです。書くのは数分位あれば書くことが出来ます。

池袋紳士では BeautifulSoupというPythonのライブラリを使用して、女の子のプロフィールと出勤情報を取得しております。

例として、 優等生 の出勤嬢の取得をご紹介いたします。

優等生は池袋でも老舗のイメクラで昔は非常に良店であったのでございますが、数年前受付所が強盗に襲われてしばらく休業してた頃に勢いを失って回復できていないように感じます。

今でも老舗として頑張っていらっしゃいますが、昔の勢いを取り返してほしいと思っているのは僕だけでしょうか。

そんなことをおもいながら優等生の出勤ページを見てみます。このページの構造はとても綺麗にできていて、とても読みやすそうです。さすがは老舗です。

女の子の写真は thumb_area クラスの要素で、この要素を検索して女の子一覧を取得いたしたいと存じます。

名前とサイズと出勤時間は、thimb_area の兄弟要素です。

HTMLファイルの取得は、Python標準のurllibを使わせていただきます。

コードは次のようになりました。

from bs4 import BeautifulSoup
import urllib.request

page = urllib.request.urlopen("http://www.u-tousei.net/schedule/").read()
root = BeautifulSoup(page, "html.parser")
for thumb in root.find_all(class_="thumb_area"):
    girl = thumb.parent

    print("{name} - {size} - {time}".format(
        name = girl.find(class_="name").text,
        size = girl.find(class_="t_size").text,
        time = girl.find(class_="time").text))

実行すると

めいちゃん(22) - T153 B85(D) W59 H85 - 10:00〜13:00
るいちゃん(20) - T151 B84(D) W59 H83 - 10:00〜15:00
あゆみちゃん(25) - T148 B83(C) W59 H84 - 10:00〜17:00
さきちゃん(22) - T155 B84(B) W58 H85 - 10:00〜17:00
...

のように出力されます。

取得したHTMLから thumb_area がクラスの要素を検索して、その兄弟から name, t_size, time がクラスの要素を探して出力しているだけです。

昔、Javaで似たような処理を書いたことがございますが、この10倍以上の行数になっていた感じがいたします。

このプロジェクトはJavascriptとBackbone.js の勉強のためにもともと始めましたが、今ではすっかりこんな処理を簡単に書けるPythonが楽しくなってまいりました。