あるタグの1つ前の要素は previous_sibling 属性で取得できるので、それが文字列 (NavigableString) かどうか判定して、そうである場合はリストに詰めていけばよいでしょう。
python
1html = '''<th>メニュー</th>
2<td id="shop-data-menu">
3<br />
4カレー 800円<br />
5うどん 600円<br />
6そば 800円<br />
7大盛 +100円<br />'''
8
9from bs4 import BeautifulSoup, NavigableString
10
11soup = BeautifulSoup(html)
12
13lst = []
14for br in soup.select('td#shop-data-menu br'):
15 prev = br.previous_sibling
16 prev_text = prev.string.replace('\n', '') if isinstance(prev, NavigableString) else None
17
18 if prev_text:
19 # 文字列が空または None でない場合は追加
20 lst.append(prev_text)
21print(lst) # ['カレー 800円', 'うどん 600円', 'そば 800円', '大盛 +100円']
22
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/17 01:25
2019/04/17 01:46