marcopagot
@marcopagot (Asuka)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

スクレイピング技術で、SUUMOのデータを取得したい!

解決したいこと

スクレイピング技術で、SUUMOのデータを取得したい🤔

現状)
記事の閲覧ありがとうございます!
初めまして🙇‍♀️python初学者です。
現在、suumoの物件情報を取得してその内容を分析しようとしています。
「はやたす」さんという、Youtubeで動画をアップされている方の内容を元に、1ページ内の情報取得することは出来ました(その情報をaとする。)
※以下、はやたすさんのURLです😎😎↓↓
https://www.youtube.com/watch?v=bP4Cnn73G8E
しかし、ページ内の別のリンクに飛んで更に別の情報を取ってくる(その情報をbとする)方法が分かりません、、、😭
※以下、飛びたいページのURLです↓↓
https://suumo.jp/chintai/jnc_000068611660/

例)
下記URLを参考に、状況を具体的に記載します。
https://suumo.jp/chintai/tokyo/sc_shinjuku/
上記URLで一番上に表示されている「都営大江戸線 牛込柳町駅 地下1地上14階建 新築」
という物件の「階、賃料/管理費、敷金/礼金、間取り/専有面積」までは取得できました。
私が取得したい情報はこっから更に「詳細を見る」
(飛んだ先のurl→ https://suumo.jp/chintai/jnc_000068611660/ )の欄に飛んで
「所在地、向き、建物種別」を取得したいです。

最終的にやりたいこと

①「所在地、向き、建物種別」を取得する。
②現在17000件ほどの物件データを取得し、データフレームにしているのですが、全物件のデータに「所在地、向き、建物種別」の内容を追加する。
上記2点が最終的にやりたいことです!!

新宿区の1ページ目のデータ(階、賃料/管理費、敷金/礼金、間取り/専有面積)を取得したコードは下記になります。

# 変数urlにSUMMOホームページのURLを格納する
url = 'https://suumo.jp/chintai/tokyo/sc_shinjuku/?page={}'

# 変数d_listに空のリストを作成する
d_list = []

# アクセスするためのURLをtarget_urlに格納する
for i in range(1,368):
    print('d_listの大きさ:',len(d_list))
    target_url = url.format(i)

    # print()してtarget_urlを確認する
    print(target_url)

    # target_urlへのアクセス結果を変数rに格納する
    r = requests.get(target_url)

    sleep(0.01)

    # 取得結果を分析してsoupに格納する
    soup = BeautifulSoup(r.text)

    # 全ての物件情報(1ページ/20件×367ページ)を取得する
    contents = soup.find_all('div', class_ = 'cassetteitem')

    # 各物件情報をforループで取得する
    for content in contents:
        #物件情報と部屋情報を取得しておく
        detail = content.find('div', class_ = 'cassetteitem_content')
        table  = content.find('table', class_ = 'cassetteitem_other')

        #物件情報から必要な情報を取得する
        title = detail.find('div', class_ = 'cassetteitem_content-title').text
        address = detail.find('li', class_ = 'cassetteitem_detail-col1').text
        access = detail.find('li', class_='cassetteitem_detail-col2').text
        age = detail.find('li', class_ = 'cassetteitem_detail-col3').text

        # 部屋情報のブロックから、各部屋情報を取得する
        tr_tags = table.find_all('tr', class_ ='js-cassette_link')

        # 各部屋情報をforループで取得する
        for tr_tag in tr_tags:

            # 部屋情報を行から、欲しい情報を取得する
            floor, price, first_fee, capacity = tr_tag.find_all('td')[2:6]

            # さらに細かい情報を取得する
            fee, management_fee = price.find_all('li')
            deposit, gratuity = first_fee.find_all('li')
            madori, menseki = capacity.find_all('li')

            # 取得したすべての情報を辞書に格納する
            d = {
                'title':title,
                'address':address,
                'age':age,
                'floor': floor.text,
                'fee': fee.text,
                'management_fee': management_fee.text,
                'deposit': deposit.text,
                'gratuity': gratuity.text,
                'madori': madori.text,
                'menseki': menseki.text
            }

            # 取得した辞書をd_listに格納する
            d_list.append(d)

質問が具体的でなく申し訳ありません😭😭
解決方法をご存知の方いらっしゃいましたら、ご教示の程よろしくお願い致します。

0

No Answers yet.

Your answer might help someone💌