こういうやつ
<dl> <dt></dt> <dd></dd> <dd></dd> <dt></dt> <dd></dd> </dl>
dtとddで1対1かしらとか思ってたけど、そうじゃなかったねめんどくさい。
というわけでゴリ押してみた
def add_values(values, _values): if len(_values) > 0: values.append(_values) def get_data(driver): ds = driver.find_elements_by_css_selector('dl > *') keys = [] values = [] _values = [] n = len(ds) i = 0 while n > i: d = ds[i] if d.tag_name == 'dt': keys.append(d.text) add_values(values, _values) _values = [] i += 1 continue if d.tag_name == 'dd': _values.append(d.text) i += 1 continue add_values(values, _values) return dict(zip(keys, values))
途中でddがきたら、dtが来るまでため続けて、dtがきたらddをvaluesのlistに追加してクリアするを繰り返す。
jqueryみたいにnextとか使えたら。。。って思うけどまぁいいや(多分これで大丈夫なはず)。さっと作ったので多分ボロいはず