アパコレ東京株式会社

トップページ > お知らせ・日記 > 初心者が3日で賃貸情報サイトのスクレイピ・・・

初心者が3日で賃貸情報サイトのスクレイピングツールを作った話

2024年02月08日




こんにちは!アパコレ東京の学生スタッフ(法)です。

みなさんは、賃貸情報サイトを見ていて、「同じ写真の同じ建物の物件が違う名前で掲載されている」
あるいは、
「ヒットした件数よりも表示されている検索結果が明らかに少ない」のを見たことがありませんか?
よくあるのが、「ハイツ△△」という物件と「JR○○線 ××駅 3階建 築5年」という物件が、名前以外はほとんど同じだったり。

他にもたとえば、狭い地域で家賃8~9万、バストイレ別、のように細かい条件を設定した際に、
30件ヒットした!と思ったら、実際に表示されるのは建物3件、部屋10件でガッカリ……なんてこともしばしば。

自分自身も部屋探ししていて、こういう重複物件にガッカリさせられることがよくあったので、これを解決するために、
賃貸情報サイトでの検索結果をスクレイピングしてExcelファイルに起こしてみることにしました。
(robots.txtをチェックして、当該ページがスクレイピングを禁止していないことを確認しました。)
今回、まったくのプログラミング初心者だったのですが、Pythonを使って、コードを自分で書いてみました。

さまざまなブログを参考にして、また社長が課金しているChatGPT4にも教えを乞いながら、完成しました!


▲ChatGPT様には頭が上がりません


▲私以外でも触りやすいように、GUIアプリを作ってプログレスバーと完了音を実装してみました

見た目はしょぼいですが、東大生の頭脳()をもってしてもこれに丸3日かかりました。
初心者中の初心者なので、まずコマンドプロンプトを探すところからはじまり、
なぜかNumPyをインストールできなかったり、Requestsをインポートできなかったり、
新しい機能を増やすたびに未知のエラーと遭遇して大変でしたが、なんとか完成できました!
途中、なぜか1ページ目をループされたり、無限ループしてしまってIDLEが暴走?したりとどうなるかと思いました。

ざっくりフローを書くと、
まずスクレイピング開始の定義を書いて、読み込めなかったときにはリトライさせます。
建物情報として建物名、住所、最寄り駅等を物件ごとに処理します。さらに複数の部屋がある場合、階や家賃ごとに部屋情報も収集します。
それからプログレスバーの値を更新する設定をして、その後CSVに結果を保存させます。encoding='utf_8_sig'を入れて文字化けを防ぎました。
そこで完了の表示と経過時間がウィンドウで出るようにしています。その後にいろいろ、base_url += "&page={}"とか、ウィンドウの設定とか、プログレスバーの設定とか、最後に音の設定をして、完成です。
初心者がつぎはぎして書いたコードなので汚くてとても見せられませんが、デバッグにデバッグを重ねて、一応機能します!

一番頑張ったところは、なぜか何度やってもRequestsをインポートできなかったので、
import sys
sys.path.append('場所')
を最初に付け足したところです。pipのインストールも場所も確認したのになぜそうなるのか理屈は不明ですが……


▲秒数が厳密ですね。量子物理学の実験か何かみたいです。桁数を減らす修正をするほどの気力がありません。

意外にも、まったくのプログラミング初心者であっても、
社長が買ってきた初心者向けのPython入門書と、ネットの先人たちのブログと、ChatGPT様様でなんとかなることがわかりました。

スクレイピングの結果を貼ることはできませんが、分類、物件名、家賃等の物件情報が1行にまとまって出てきます。
見てみると、某賃貸情報サイトで検索して、
ヒットした件数が「約2700件」であったのに対して、実際にスクレイピングして数えてみたら「約600件」でした。
このサイトは自動で、重複した物件情報がひとつしか表示されないようになっているので、これはつまり、
実質的な物件の数は賃貸情報サイトの登録件数に比べて圧倒的に少ないということです。
他にも様々な条件で検索してみましたが、数えてみるとおおむね4分の1ほどになっていました。

そして、ここでは1つ目に書いた、同じ写真だけど違う登録名の物件は考慮していません。
また、掲載されていても既に成約している物件もあります。
実際の物件数は賃貸情報サイトの掲載数に比べてかなり少ないものになるのです。

実際にどの物件がどういう状態かは、問い合わせてみなければわかりません。
そして、仲介手数料も業者によって異なるので、複数の仲介会社を比べて検討してみるのもいいでしょう。
ポータルサイトを見ているだけではなく、実際に不動産屋に問い合わせるということの重要性をお分かりいただけたでしょうか。

ということで、みなさんもぜひ独学でPythonスクレイピング生活を始めてみてはいかがでしょうか?

さようなら!


アパコレ東京株式会社 

  1. 営業時間10:00~18:00
  2. 定休日水曜日定休、但し4月~8月は毎週水曜日と日曜日が定休
  3. 東京都文京区本郷2-25ー9RBM本郷レジデンス1F
  4. 免許番号:東京都知事免許(3)第90655号