質問: bs.findAll('td', id_="shop-data-menu") for c in menu if "カレー" in c.get('br') ``` でうまくいかないのですが、ほかに方法はありますでしょうか。
回答: あるタグの1つ前の要素は previous_sibling 属性で取得できるので、それが文字列 (NavigableString) かどうか判定して、そうである場合はリストに詰めていけばよいでしょう。 ``` html = '''メニュー カレー 800円 うどん 600円 そば 800円 大盛 +100円''' from bs4 import BeautifulSoup, NavigableString soup = BeautifulSoup(html) lst = [] for br in soup.select('td#shop-data-menu br'): prev = br.previous_sibling prev_text = prev.string.replace('\n', '') if isinstance(prev, NavigableString) else None if prev_text: # 文字列が空または None でない場合は追加 lst.append(prev_text) print(lst) # ['カレー 800円', 'うどん 600円', 'そば 800円', '大盛 +100円'] ```