前提・実現したいこと
あるウェブページから、seleniumを使って、テキスト(数字)を抽出、改行を削除し、float型に変換させたいです。
発生している問題・エラーメッセージ
ValueError: could not convert string to float: '110.\n20\n5'
該当のソースコード
html
1<div class="aaa"> 2 <span class="bbb">110.</span> 3 <span class="ccc">20</span> 4 <span class="ddd">5</span> 5</div>
python
1driver = webdriver.Chrome() 2 3elem = driver.find_element_by_class_name('aaa').text #クラスaaaのテキストを抽出 4print(elem) #<span>ごとに改行された結果が出力される 5elem.rstrip('\n') #改行を削除 6print(elem) #改行の削除が反映されず、<span>ごとに改行された結果が出力される 7elem = float(elem) #エラー発生 ValueError: could not convert string to float: '110.\n20\n5' 8print(elem)
エラーの内容から、改行コードが邪魔をしていると考え、改行を削除するコードを追加しました。
しかし、改行を削除したところが反映されていません。
print出力した内容は以下のようになります。
110. 20 5 110. 20 5 ... ValueError: could not convert string to float: '110.\n20\n5'
試したこと
elem.rstrip('\n') #試したこと1(改行を削除) elem.replace('\n','') #試したこと2(改行を空白に変換) elem.strip() #試したこと3(スペース、タブ、改行を含む空白を削除)
上記の方法を試しましたが、全て同じ結果となり、うまく反映されませんでした。
補足情報(FW/ツールのバージョンなど)
以下のようなやり方ではなく、class名"aaa"のテキストを1回でまとめて抽出したいと考えています。
python
1elem_1 = driver.find_element_by_class_name('bbb').text 2elem_2 = driver.find_element_by_class_name('ccc').text 3elem_3 = driver.find_element_by_class_name('ddd').text 4elem = elem_1 + elem_2 + elem_3 5elem = float(elem)
解決方法が思い当たらないため、何かアドバイスいただけますと幸いです。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー