🌊

7月27日

2023/07/27に公開

やりたいこと

・住所の要素指定
・駅 ・バス/徒歩 ・価格 ・間取り ・築年数の要素指定する

今の現状

住所を取得するために

areas = soup.select('div#js-bukkenList > form > ul > li div:last-of-type div:last-of-type > div > div div:last-of-type div.infodatabox-boxgroup > div > table > tbody tr:last-of-type > td > div')
for area in areas:
    print(area.text)

と書いたが、住所以外の要素も取得されているのでそこを修正したい。色々試行錯誤したのち、以下のコードで住所のみ出力できるようになった。
これが該当箇所のhtml。上のコードでもパッと見は住所を取得できそうだが、他の箇所も出力されてしまう。なぜなんだろう、、、。

areas = soup.select('div#js-bukkenList > form > ul > li div:last-of-type div:last-of-type > div > div div:last-of-type div.infodatabox-boxgroup > div > table > tbody tr:last-of-type div:-soup-contains("東京都")')
for area in areas:
    print(area.text)

最終的には
家の名前:〜
住所:〜
画像:〜
のようにしていきたい。

では次に各ページに移動してそこのhtml情報を取得するというコードを書く。
1ページ目のURLは、https://suumo.jp/tokyo/sc_shinjuku/pnz11.html
となっており、次のページではpnz12, その次はpnz13となる。そのため、forループでpnzに1ずつ数字を足していけば次のページまで遷移するというコードをかける。

とりあえず軌道修正して、
①一つ一つの物件情報にアクセス
②各ページのHTMLを取得
③そのファイルをフォルダに保存
④③のファイルから様々な情報を取得する

という流れに修正した。
そのため今は①の各物件のURLを出力するコードを書くことができた。嬉しい:)

#urlの取得
page_a = soup.select('div#js-bukkenList > form > ul > li div:last-of-type h2 > a')
for page_url in page_a:
    print(page_url.get('href'))

Discussion