前提・実現したいこと
対象のHTMLから表を作りたいと思っています。
表をつくるところまでできたのですが、、余計なものがついてきてしまっているので、文字のみを抽出したいと考えています。
下記コードのpokemon_nameをpokemon_name.textで文字のみにできると思ったのですが、できませんでした。文字のみにする方法を知っているかた、ご教授ください。
HTMLは長いため、下記コードのspotに格納してあるHTMLのみ文字制限のため、コメントに記載します。必要でしたら、全文記載しますので、お申し付けください。
該当のソースコード
python
1spots = soup.find_all('div', attrs={'class': 'list-table'}) 2spot = spots[0] 3pokemon_taitles = spot.find('th', attrs={'class': 'symbol-cell'}) 4 5pokemon_taitle = pokemon_taitles.text 6 7meigara_taitle 8'ポケモン' 9 10pokemon_name = spot.find_all('div', attrs={'class': 'symbol-name'}) 11pokemon_name 12[<div class="symbol-name">アチャモ</div>, 13 <div class="symbol-name">ミズゴロウ</div>, 14 <div class="symbol-name">キモリ</div>, 15 <div class="symbol-name">コイキング</div>, 16 <div class="symbol-name">ヒトカゲ</div>] 17 18pokemon = pokemon_name 19pokemon 20[<div class="symbol-name">アチャモ</div>, 21 <div class="symbol-name">ミズゴロウ</div>, 22 <div class="symbol-name">キモリ</div>, 23 <div class="symbol-name">コイキング</div>, 24 <div class="symbol-name">ヒトカゲ</div>] 25 26details = {} 27 28for spot in spots: 29 pokemon_taitle = pokemon_taitles.text 30 pokemon = pokemon_name 31 32 details[pokemon_taitle] = pokemon 33 34details 35{'銘柄名': [<div class="symbol-name">アチャモ</div>, 36 <div class="symbol-name">ミズゴロウ</div>, 37 <div class="symbol-name">キモリ</div>, 38 <div class="symbol-name">コイキング</div>, 39 <div class="symbol-name">ヒトカゲ</div>]} 40 41spots = soup.find_all('div', attrs={'class': 'list-table'}) 42spot = spots[0] 43waza_taitles = spot.find('th', attrs={'class': 'winner-result-cell'}) 44 45waza_taitle = waza_taitles.text 46waza_taitle 47'技' 48 49waza_name = spot.find_all('td', attrs={'class': 'winner-result-cell'}) 50waza_name 51[<td class="winner-result-cell">ひのこ</td>, 52 <td class="winner-result-cell">あわ</td>, 53 <td class="winner-result-cell">はたく</td>, 54 <td class="winner-result-cell">はねる</td>, 55 <td class="winner-result-cell">えんまく</td>] 56 57waza = waza_name 58waza 59[<td class="winner-result-cell">ひのこ</td>, 60 <td class="winner-result-cell">あわ</td>, 61 <td class="winner-result-cell">はたく</td>, 62 <td class="winner-result-cell">はねる</td>, 63 <td class="winner-result-cell">えんまく</td>] 64 65datum = details 66datum[waza_taitle] = waza 67 68datum 69{'銘柄名': [<div class="symbol-name">アチャモ</div>, 70 <div class="symbol-name">ミズゴロウ</div>, 71 <div class="symbol-name">キモリ</div>, 72 <div class="symbol-name">コイキング</div>, 73 <div class="symbol-name">ヒトカゲ</div>], 74 '技': [<td class="winner-result-cell">ひのこ</td>, 75 <td class="winner-result-cell">あわ</td>, 76 <td class="winner-result-cell">はたく</td>, 77 <td class="winner-result-cell">はねる</td>, 78 <td class="winner-result-cell">えんまく</td>]} 79 80df = pd.DataFrame(datum) 81df.to_csv('自動.csv', index=False) 82 83 84 85自動.CSV 86|ポケモン |技| 87|<div class="symbol-name">アチャモ</div> |<td class="winner-result-cell">ひのこ</td>,|- 88|<div class="symbol-name">ミズゴロウ</div> <td class="winner-result-cell">あわ</td> 89 <div class="symbol-name">キモリ</div> <td class="winner-result-cell">はたく</td> 90 <div class="symbol-name">コイキング</div> <td class="winner-result-cell">はねる</td> 91 <div class="symbol-name">ヒトカゲ</div>] <td class="winner-result-cell">えんまく</td> 92 93||| 94
試したこと
pokemon_name.text
エラーコード
ResultSet object has no attribute 'text'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?
補足情報(FW/ツールのバージョンなど)
python
jupyterlab
selenium
pandas
初心者のため、わかりにくいところが多々あるかと思いますが、ご質問いただければ、なるべく早く返信いたしますので。気兼ねなくご質問ください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/04 12:03
2021/10/04 12:11
2021/10/04 12:44 編集
2021/10/04 13:51
2021/10/04 14:15