質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

351閲覧

スクレイピングで取得できません

E.Kudo

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/10 04:22

編集2021/11/10 05:20

スクレイピングで、賃貸物件サイトからの情報(建物名、所在地、アクセスなど)を3ページ分、辞書として取得したいのですが、どうしてもうまくいきません。
エラーにはならないのですが、検索したページが増えても辞書に追加できません。

初歩的なミスなのかもしれませんが、どうかどなたかお教えいただけると幸いです。

Python3

1 2from time import sleep 3from bs4 import BeautifulSoup 4import requests 5 6 7url = 'https://suumo.jp/chintai/tokyo/sc_shinjuku/?page={}' 8 9d_list = [] 10 11for i in range(1,4): 12 print('d_listの大きさ:',len(d_list)) 13 target_url = url.format(i) 14 print(target_url) 15 r = requests.get(target_url) 16 17 sleep(1) 18 19 soup = BeautifulSoup(r.text) 20 21 contents = soup.find_all('div',class_='cassettitem') 22 23 24 for content in contents: 25 detail = content.find('div',class_='cassetteitem-detail') 26 table = content.find('table',class_='cassetteitem_other') 27 28 title = detail.find('div',class_='cassetteitem_content-title').text 29 adress = detail.find('li',class_='cassetteitem_detail-col1').text 30 access = detail.find('li',class_='cassetteitem_detail-col2').text 31 age = detail.find('li',class_='cassetteitem_detail-col3').text 32 33 tr_tags = table.find_all('tr',class_='js-cassette_link') 34 35 36 for tr_tag in tr_tags: 37 floor,price,first_fee,capacity = tr_tag.find_all('td')[2:6] 38 39 fee,management_fee = price.find_all('li') 40 deposit,gratuity = first_fee.find_all('li') 41 madori,menseki = capacity.find_all('li') 42 43 d = { 44 'title':title, 45 'address':address, 46 'access':access, 47 'age':age, 48 'floor':floor.text, 49 'fee':fee.text, 50 'management_fee':management_fee.text, 51 'deposit':deposit.text, 52 'gratuity':gratuity.text, 53 'madori':madori.text, 54 'menseki':menseki.text 55 } 56 57 d_list.append(d) 58

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ppaul

2021/11/10 04:37

d_list.append(d)のインデントが間違っている可能性がありますが、インデントがわからないので答えようがありません。 https://teratail.com/questions/238564 を読んでソースコードのインデントがわかるようにしてください。
E.Kudo

2021/11/10 05:22

ご指摘ありがとうございます。 修正いたしました。 よろしくお願いいたします。
guest

回答1

0

ベストアンサー

contents = soup.find_all('div',class_='cassettitem')

ページソースを読む限り、cassettitemというクラスは使われていません。
cassetteitemならあります。

投稿2021/11/12 04:52

attakei

総合スコア2738

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

E.Kudo

2021/11/12 05:11

何回も見直したんですけどまったく気がつきませんでした^^; ありがとうございます! スッキリしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問