【AI×Python×物件探し①】スクレイピングで物件情報をCSVにする

引っ越しをしようと思い、最近は毎日のように物件を探しています。

仲介会社の情報だけに頼るのは不安だし、かといって自分で膨大な物件情報を探してまとめるのはとても大変です。(もっと便利なツールが欲しいですね)

というわけで物件情報サイトから自動でデータを抽出しCSVにまとめるプログラムを作ることに。

AIによってこういうプログラムを作るのメッチャ楽になったなぁ。


やりたいこと

僕の実現したいことは以下の通り。
  • 自動で物件情報をCSVにまとめる
  • 分析、比較しやすいようにデータを整形
    • テキストを数値データにするなど
  • 最寄り駅から会社までの電車の所要時間を追加する
  • 物件の価値を数値化し格安な物件を見つける

大きく分けて以下のようなことを実現したい。
  1. スクレイピングで情報をCSVにまとめる
  2. データを使いやすくするために前処理
  3. 統計、機械学習を用いて物件の価値を数値化

これまでは2と3はプログラムでやってたんですけど、1の部分が手だったのでここもプログラム化したい。




物件情報を自動でCSV化

まずは仕様を固めていきました。

仕様

  • ペットホームウェブの物件情報を対象とする
    • 猫を飼ってるので
  • 事前に条件を絞ったURLを用意する
    • 賃料、間取りなどURLのパラメータで指定できる仕様となっている
    • 地域、賃料、猫可、間取り、築年数、建物構造など
  • Pythonを使用
    • BeautifulSoupでスクレイピングを行う
  • 複数ページにまたがる場合は前ページを網羅する
  • 掲載情報は全て取得する
  • データを使いやすいように処理を加える
    • 賃料+管理費を数値にするなど
  • 最寄りから会社までの所要時間を追加
  • すでに取得済みURLは再度取得はしない

実装

具体的なプログラムは載せませんが(興味があれば連絡ください)、プログラムの流れと実装上の注意点を書いておきます。

CSVにまとめるまでの流れ

➡過去に取得したデータがあれば読み込む
➡事前に検索条件で絞られたURLのリストをforで回す
➡ページのHTMLを取得
➡要素を辞書にまとめる
➡データの整形
➡次のページへ

会社までの所要時間

これは自動で計算するのは難しそうだったので事前に調べた辞書を作成しておくことで解決しました。
{"高円寺駅": 28}のようにJSONで作成しました。

その他前処理

  • 賃料と共益費を合算した値へ
  • 築年月から築年数を抽出
  • 設備の文字列からB・T別を抽出し真偽に
  • 交通の情報から路線、駅、徒歩分、バス分を抽出
  • データの追加日を追加

注意点

大抵のサイトは攻撃への対策を行っており、スクレイピングははじかれる可能性が高いです。
なので以下のような対応が必要。
  • GoogleCollaborateryのようなクラウドサービスは使わない
    • 実際はじかれた、ローカルからならうまくいく
  • ヘッダーにUser-Agentを設定する
  • ページのアクセスへ遅延を付ける
    • ランダムな秒数プログラムを止める
  • 自然なページ遷移をする
    • 最初にトップページにアクセスするとか
これでもはじかれますが時間をおいてやると問題ない。
途中で停止しても最初からやり直しにならないよう、取得済みデータを保存し、途中から再開できる仕組みにしています。

完成したCSV

最終的に出力されるのが以下のようなCSVです。
これを手でやってたのマジで気が狂ってたな。
プログラムはいいですねぇ。


次回はこれらのデータを分析して割安な物件を見つけていこうと思います。


コメント